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

Ale*_*x L 16 linux file-transfer

我需要将文件从一台 CentOS 服务器传输到另一台。大约每 10 分钟将传输 5MB 文件。不需要加密。

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

有什么比 ftp 更简单的吗?

谢谢!

KPW*_*INC 25

同步

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

更多选择和(以我的经验)更可靠的传输。


Eva*_*son 22

通过 ssh 使用 tar 是可以的,但是通过 netcat 通过 TCP 使用 tar 的开销与您所能获得的一样低!如果这是一次性的事情,请试一试:

在接收器上:

nc -l -p 8989 | tar x
Run Code Online (Sandbox Code Playgroud)

在发件人:

tar cf - /source-path | nc (receiving host ip address) 8989
Run Code Online (Sandbox Code Playgroud)

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


Ken*_*ter 9

有两个人在ssh上提到了tar,但是没有说怎么做。为了记录,基本程序是运行:

tar cf - files... | ssh remotehost 'cd /destination && tar xvf -'
Run Code Online (Sandbox Code Playgroud)

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

ssh remotehost 'cd /source && tar cf - files' | tar xvf -
Run Code Online (Sandbox Code Playgroud)

与 Evan 的 netcat 解决方案相比,这样做的优势在于整个事情可以从一台计算机启动;您不必协调两个 netcat 调用。如果您需要它自动运行,您可以设置一个 ssh 密钥,让您无需密码即可建立连接,并使用该密钥进行这些连接。

ssh 有一个 -C 选项来压缩其数据流,或者您可以使用 GNU tar 的内置压缩功能:

tar zcf - files... | ssh remotehost 'cd /destination && tar xzvf -'
Run Code Online (Sandbox Code Playgroud)

Rsync 是另一种选择,但它的强项是更新接收端已经存在的文件。我发现在使用它传输另一端尚不存在的文件时,它比 scp 或 tar/ssh 慢。


cha*_*aos 6

老实说,我会使用scptar结束ssh。加密确实会减慢速度,但易于设置和使用、可靠性和(当然,主观上)熟悉度让我愿意接受打击,除非我真的需要那个速度。

您也可以通过告诉它使用比默认值更快的密码来加速 ssh 传输。默认值通常是3des并且您通常可以执行-c des,因此这显然会更快,并且-c blowfish表示也同样快,尽管我还没有对其进行严格测试。

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