我需要将文件从一个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”。
nc -l -p 7878 | tar -C /target/dir -xzf -
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