我一直使用普通的 rsync 命令将大量数据从 LAN 上的某些硬盘驱动器移动到另一台计算机进行分析。通常只需一次性传输。我一直使用的 rsync 格式是:
rsync -ave ssh foo@bar:/source dest
我需要尽可能提高传输速度。最近有人提到设置 rsh-server 并通过 RSH 复制文件。没有加密开销会非常有帮助。我想我有以下选择:
- cp、scp 等等。
- 通过 rsh 进行 rsync
- 通过 ssh 进行 rsync,使用 arcfour 加密以降低速度
- rsyncd,无加密,由于不需要建立文件列表,因此具有一些优势
我很好奇哪个能带来最佳性能。我知道,每个案例都不同。还有其他更好的选择吗?
一些说明:
安装非常方便。设置 RSH 服务器有点麻烦。Rsyncd 设置合理。安全性不是大问题。
全部都是 7200 rpm 驱动器、千兆网络和高速 CPU(至少双核 i7 2.0ghz)。
答案1
在工作中,我们使用 rsyncd 来备份同一 LAN 上的服务器。我认为它提供了最大的传输速度。几乎没有协议开销。
但是,与通过 SSH 进行 rsync 一样,构建文件列表需要时间。除非文件树非常庞大,否则构建文件列表非常快。
rsyncd 设置非常简单且功能强大。请参阅man rsyncd.conf
答案2
你写道“安全不是一个大问题”和“没有加密开销会非常有帮助”。
然后,您应该使用rsync
不加密开销的格式。只需在主机规范后使用双冒号 (::) 分隔符即可。请参阅man rsync
以了解详情。对于“一次性传输”,服务器端的临时通配符设置可能会有所帮助,如下所示:文件复制实用程序或文件管理器在复制时是否显示每个字节的报告?
答案3
结论
这将恢复部分传输,并添加压缩以加快传输速度
rsync --partial --progress --archive --compress --compress-choice=zstd --compress-level=9 --checksum-choice=xxh3 user@host:~/my_file.txt .
标志解释
--partial
:恢复部分文件传输
--progress
:显示传输进度和预计到达时间
--archive
:保留文件属性
--compress
:启用压缩(默认为 zlib)
--compress-choice=zstd
:启用 zstd 压缩(比 zlib 压缩更快更好)
--compress-level=9
:将压缩级别从默认值 3 提高(与最大值 19 进行权衡)
--checksum-choice=xxh3
:使用 xxh3 哈希算法(非常快)
答案4
如果您需要提高传输速度,请使用带有-z
选项的命令,用于压缩。
rsync -avze ssh foo@bar:/source dest
压缩是使用 zlib 库完成的,因此传输的字节数会更少。