我需要将文件从一台 CentOS 服务器传输到另一台。大约每 10 分钟传输 5MB 文件。不需要加密。
有什么简单的方法可以快速传输文件?
有没有比 ftp 更简单的东西?
谢谢!
答案1
同步
在使用 ftp 或 tftp 之前我会使用 rsync。
更多选择和(根据我的经验)更可靠的传输。
答案2
通过 ssh 传输 tar 还可以,但通过 netcat 通过 TCP 传输 tar 的开销几乎是最低的!如果这是一次性的事情,请尝试一下:
在接收方:
nc -l -p 8989 | tar x
在发送方:
tar cf - /source-path | nc (receiving host ip address) 8989
如果这是您要定期做的事情,我可能会使用 rsync。
答案3
有两个人提到了通过 ssh 执行 tar,但没有说明具体操作方法。记录一下,基本步骤是运行:
tar cf - files... | ssh remotehost 'cd /destination && tar xvf -'
或者,如果您想从接收端开始传输:
ssh remotehost 'cd /source && tar cf - files' | tar xvf -
与 Evan 的 netcat 解决方案相比,这种方式的优势在于,整个过程可以从一台计算机启动;您不必协调两次 netcat 调用。如果您需要自动运行,您可以设置一个 ssh 密钥,这样您就可以在不使用密码的情况下建立连接,并使用该密钥进行这些连接。
ssh 有一个 -C 选项来压缩其数据流,或者您可以使用 GNU tar 的内置压缩功能:
tar zcf - files... | ssh remotehost 'cd /destination && tar xzvf -'
Rsync 是另一种选择,但它的强项是更新接收端已存在的文件。我发现,当使用它传输另一端尚不存在的文件时,它比 scp 或 tar/ssh 慢。
答案4
如果您必须通过 scp/ssh,我的实验表明,目前默认启用的最快密码是 RC4。您可以通过“-c 弧四' 在你的 ssh/scp 命令中:
初始副本:
scp -c arcfour -r foo/ desthost:/destdir
更新信息:
rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir