在Linux服务器之间快速传输文件的最简单方法是什么?

我需要将文件从一个CentOS服务器传输到另一个服务器。 每10分钟将传输5MB文件。 不需要encryption。

什么是文件快速传输的简单方法?

有什么比ftp简单吗?

谢谢!

rsync的

我使用rsync之前,我用ftp或tftp。

更多的select和(以我的经验)更可靠的转移。

通过SSH的焦油是好的,但通过netcat的TCP通过TCP是低开销,你可以得到! 如果这是一次性事情,请给这个镜头:

在接收器上:

nc -l -p 8989 | tar x 

发件人:

 tar cf - /source-path | nc (receiving host ip address) 8989 

如果这是你要经常做的事情,我可能会使用rsync。

有两个人提到了ssh的tar,但没有说明如何去做。 为了logging,基本程序是运行:

 tar cf - files... | ssh remotehost 'cd /destination && tar xvf -' 

或者,如果您想从接收端开始传输:

 ssh remotehost 'cd /source && tar cf - files' | tar xvf - 

与Evan的netcat解决scheme相比,这样做的好处是整个事情可以从一台电脑启动; 您不必协调两个netcat调用。 如果你需要这个自动运行的话,你可以设置一个ssh密钥,让你在没有密码的情况下build立连接,并使用这个密钥来连接这些连接。

ssh有-C选项来压缩它的数据stream,或者你可以使用GNU tar的内置压缩function:

 tar zcf - files... | ssh remotehost 'cd /destination && tar xzvf -' 

Rsync是另一种select,但其强大的function是更新接收端已经存在的文件。 我发现它比使用scp或tar / ssh传输另一端不存在的文件要慢。

我真的用scp或者tar通过ssh 。 encryption确实减慢了速度,但是设置和使用的方便性,可靠性和(主观上当然)熟悉程度使得我很乐意接受这个命中,除非我真的需要这样的速度。

你可以通过告诉它使用比默认值更快的密码来加速ssh传输。 默认通常是3des ,通常可以用-c des ,所以显然会更快,而且-c blowfish也performance的很快,尽pipe我没有严格testing。

(回到SSHv1的时代,你经常可以做-c none ,但是我想有人认为这是不好的juju。)

如果您必须通过scp / ssh,我的实验显示,默认启用的最快密码是RC4。 你可以在你的ssh / scp命令中通过' -c arcfour '指定密码:

初始副本:

  • scp -c arcfour -r foo/ desthost:/destdir

更新:

  • rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir

Rsync是一个很好的方法,因为如果你发现你不止一次地传输相同的文件,它会加快复制速度,正如手册页中的引用所示。

  rsync is a program that behaves in much the same way that rcp does, but has many more options and uses the rsync remote-update protocol to greatly speed up file transfers when the destination file is being updated. The rsync remote-update protocol allows rsync to transfer just the dif- ferences between two sets of files across the network connection, using an efficient checksum-search algorithm described in the technical report that accompanies this package. 

FTP非常简单,但更简单的方法可能是在一台机器上创build一个NFS共享,并将其挂载到另一台机器上。 然后复制文件将包括从一个目录到另一个目录的cp。

如果你想要速度,你可以使用netcat和tar。 在encryption不是问题的本地networking上,它将比ssh,rsync或scp更快。 Google“netcat tar”。

DestinationServer

 nc -l -p 7878 | tar -C /target/dir -xzf - 

SourceServer

 tar -cz /source/dir | nc DestinationServer 7878 

这显然要求实际安装netcat。 Google“netcat焦油”了解更多信息。

我相信你已经解决了你的问题,但如果你的SSH在另一个端口(不是在标准的端口22),你可以使用这个

rsync -avz –rsh ='ssh -pXXXXX'/ local / dir / [email protected].1.2:/ remote / dir

注意: – 用您的端口号replaceXXXXX – 用正确的远程服务器IPreplace192.16.1.2