如何加快两个本地磁盘之间的 rsync 速度?

如何加快两个本地磁盘之间的 rsync 速度?

我正在运行 rsync 将目录同步到我的外部 USB 硬盘上。它大约有 150 GB 的数据。我猜有 50000 多个文件。

它目前正在运行第一次同步,但复制文件的速度仅为 1-5 MB/s。对于 USB 2.0 外壳来说,这似乎慢得令人难以置信。驱动器上也没有其他传输正在进行。

以下是我使用的选项:

rsync -avz --progress /mysourcefolder /mytargetfolder

我正在运行 Ubuntu Server 9.10。

答案1

第一次同步只需使用

cp -a  /mysourcefolder /mytargetfolder

仅当目标为空时,rsync 才会增加开销。

另外.. -z 选项可能会影响您的性能,如果您不是通过慢速链接传输数据,则不应该使用它。

答案2

如果你在同一台机器上使用快速网络或磁盘到磁盘的 rsync,

不是使用压缩 -z

并使用 --inplace

加快硬盘或网络的性能

压缩占用大量 CPU

不是使用 inplace 会使硬盘严重损坏(在创建最终文件之前会使用临时文件)

压缩并且不使用就地处理更适合通过互联网进行(网络速度慢)

新功能:注意目的地...如果启用了 NTFS“压缩”...这会严重减慢大文件的速度(我认为是 200MB+)rsync 几乎停滞了,这是由此造成的。

答案3

首先 - 在这种情况下,文件数量将是一个主要因素。每个文件的平均大小为 3MB。在 OP 的情况下,可能存在影响速度的 io 瓶颈。更多详情- 读起来相当枯燥,但封面图片值得一读。

那么,使用 rsync 复制到空目录?以下是一些加速的方法:

  1. 没有 -z — 绝对不要像在 OP 中那样使用 -z。
  2. --no-compress 可能会加快速度。这可能会产生最大的影响... 我的测试有 13,000 个文件,总大小为 200MB,使用 rsync 3.1.3。我同步到同一内部 SSD 驱动器上的另一个分区。使用 --no-compress,我得到 18 MBps,不使用 --no-compress,我得到 15 MBps。顺便说一下,cp 得到 16 MBps。不过,这是一个小得多的平均文件大小。另外 - 我找不到 --no-compress 的任何文档。我是从 stackexchange.com 上的这篇文章中了解到这一点的。
  3. -W 至复制整个文件- 如果您不想比较差异,请始终使用此功能;不要介意 rsync 的重点是比较差异并仅更新更改。
  4. -S 处理稀疏文件好吧 - 如果你没有稀疏文件就不会造成伤害。
  5. --exclude-from 或类似命令排除您可能不需要的文件会减少时间,但不会提高您的传输速度。
  6. 它是可能的如果您将输出发送到这样的文件rsync -a /source /destination >/somewhere/rsync.out 2>/somewhere/rsync.err- 第一个>基本上会打印一个包含您通常会看到的所有内容的文件,而2>指的是错误消息。
  7. 最后,运行 rsync 的多个实例对您转移的不同部分可能会有很大的帮助。

我的命令是:

rsync -avAXEWSlHh /source /destination --no-compress --info=progress2 --dry-run

如果一切顺利,我会删除“--dry-run”并放弃它。A、X 和 E 涵盖 -a 未涵盖的扩展属性和权限,l 代表软链接,H 代表硬链接,h 代表人类可读。

更新 USB 驱动器、同一驱动器或网络上已同步的目录都需要不同的 rsync 命令来最大化传输速度。

奖金-这是 rsync 手册页如果你想测试你的硬盘速度,邦尼++是一个不错的选择,对于你的网络速度,可以尝试一下防火墙


*这篇文章已经有近十年的历史了,但搜索引擎肯定喜欢它,而且我一直看到它。这是一个好问题,我认为“如何加快 rsync 速度”的最佳答案不应该是“改用 cp”。

答案4

你肯定想给克隆试试看。这个东西快得令人发狂:

$ tree /usr [...] 26105 个目录,293208 个文件

$ sudo rclone sync /usr /home/fred/temp -P -L --transfers 64

已传输:17.929G / 17.929 GBytes,100%,165.692 MBytes/s,ETA 0s 错误:75(重试可能会有帮助) 检查:691078 / 691078,100% 已传输:345539 ​​/ 345539,100% 耗时:1m50.8s

这是从 LITEONIT LCS-256 (256GB) SSD 进行的本地复制。

您可以在第一次运行时添加 --ignore-checksum 以使其更快。

相关内容