我正在运行 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 复制到空目录?以下是一些加速的方法:
- 没有 -z — 绝对不要像在 OP 中那样使用 -z。
- --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 上的这篇文章中了解到这一点的。
- -W 至复制整个文件- 如果您不想比较差异,请始终使用此功能;不要介意 rsync 的重点是比较差异并仅更新更改。
- -S 处理稀疏文件好吧 - 如果你没有稀疏文件就不会造成伤害。
- --exclude-from 或类似命令排除您可能不需要的文件会减少时间,但不会提高您的传输速度。
- 它是可能的如果您将输出发送到这样的文件
rsync -a /source /destination >/somewhere/rsync.out 2>/somewhere/rsync.err
- 第一个>基本上会打印一个包含您通常会看到的所有内容的文件,而2>指的是错误消息。 - 最后,运行 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 以使其更快。