我运行一个 rsync 作业,通过 100 MBit 连接传输约 4500 万个文件/约 1.8 TB 数据(Mac OS X Time Machine 备份)。
我使用MacPorts中的rsync 3.1.1(我第一次尝试内置的rsync,版本2.6.9,因为它有一个Mac OS X特定的缓存参数,但它耗尽了内存)和以下参数
rsync -HzvhErlptgoDW --stats --progress --out-format="%t %f %b" /source/ /destination/
源是与 Firewire 800 连接的外部 3.5" HDD。目标是本地安装的稀疏磁盘映像包(但其“源文件”位于网络存储上)。最初我获得了良好的速度,7-9 MB/s文件相当大,但此操作持续的时间越长(我三天前重新启动了它),速度就越慢,当没有任何反应时也会出现长时间的暂停,如下所示:
2011-01-22-070305/Macintosh HD/Library/Application Support/Apple/Mail/Stationery/Apple/Contents/Resources/Photos/Contents/Resources/Bamboo.mailstationery/Contents/Resources/Mask3.png
1.28K 100% 3.26kB/s 0:00:00 (xfr#48406, ir-chk=1050/4166332)
2016/01/16 18:26:48 Volumes/src/Backups.backupdb/mm/2011-01-22-070305/Macintosh HD/Library/Application Support/Apple/Mail/Stationery/Apple/Contents/Resources/Photos/Contents/Resources/Bamboo.mailstationery/Contents/Resources/Mask3.png 313
2011-01-22-070305/Macintosh HD/Library/Application Support/Apple/Mail/Stationery/Apple/Contents/Resources/Photos/Contents/Resources/Bamboo.mailstationery/Contents/Resources/banner-green.jpg
32.26K 100% 0.00kB/s 0:00:00 (xfr#48407, ir-chk=1049/4166332)
2016/01/16 19:17:37 Volumes/2TB/Backups.backupdb/mm/2011-01-22-070305/Macintosh HD/Library/Application Support/Apple/Mail/Stationery/Apple/Contents/Resources/Photos/Contents/Resources/Bamboo.mailstationery/Contents/Resources/banner-green.jpg 31279
(我无法将时间戳加粗,但如您所见,第一个文件于 18:26 完成,第二个文件于 19:17 完成,第二个文件只有 32 kB)
我认为传输不受 CPU 限制。存在一些 CPU 峰值,但 CPU 负载通常低于 10%。总而言之,在传输进行的 72 小时内,此操作生成的三个 rsync 进程几乎使用了 5 小时的 CPU 时间。计算机本身每天闲置 23 小时。
记忆力也不是问题。自操作开始以来,内存压力一直是“绿色”的。
内核任务已经积累了相当多的CPU时间(我写这篇文章时是57小时),但另一方面,正常运行时间是25天,所有这些57小时不可能被rsync消耗掉。
一些最终细节
- 当我三天前重新启动该进程以获得更好的日志记录时,我已经运行了该进程几天。第一个文件传输花了九个小时。
- 我首先使用 Finder 将这个目录树从同一源传输到同一目的地。总共花了3天时间。现在我已经花了六天了,我想我连树的三分之一都没有转移。
- 我尝试过在此操作之外的同一源和目标之间传输文件,并且它们全速运行。
答案1
目标是本地安装的稀疏磁盘映像包(但其“源文件”位于网络存储上)。
这是你的问题。您会看到在本地计算机和网络存储(例如 SMB、AFP、NFS 等)之间回传数据的任何协议的性能都很差,这是一个常见的陷阱。
Rsync 需要读取每个文件(如果日期时间不同)以查看要发送哪些位。在您的情况下,您的文件系统正在拉动整个文件在 rsync 可以读取之前从网络存储传输到本地 Mac。你的速度变慢了。
NB 非常感谢您对网络支持如此清晰。