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

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

我需要将文件从一台 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

相关内容