在对 Synology DS251j 外置 USB 驱动器的性能感到失望之后,我对外壳进行了一些传输测试。
rsync
有趣的是,我发现复制 1GB 的测试文件比使用简单命令花费的时间长三倍cp
。
我无法在桌面 Linux 上确认此行为。其他人有类似的经历吗?rsync
DS 上有什么问题吗?
测试脚本:
#!/bin/bash
sync
echo `date +%M:%S`
cp /volume1/a.tmp /volumeUSB1/usbshare
sync
echo `date +%M%S`
rsync /volume1/b.tmp /volumeUSB1/usbshare
sync
echo `date +%M:%S`
这些文件a.tmp
和b.tmp
每个都是 1GB,volume1
是内部驱动器的挂载点/volumeUSB1/usbshare
,也是 USB 3 驱动器的挂载点。
另一个可以证实这一行为的事实是,我可以使用 轻松地在一夜之间备份整个驱动器,cp
而使用 则无法做到这一点rsync
。
答案1
你会预计rsync 比 cp 慢第一的复制,因为它需要更多“来”和“回”操作。但可能不需要 3 倍的时间。
你会预计rsync 在后续“更新”副本中速度较慢如果使用了 -c 选项,读取和校验在目标机器上是一项昂贵的操作(磁盘速度慢、CPU 速度慢或内存不足)。同样,如果文件很大并且很多文件被更改,不使用 -c 可能会很慢。
如果您忘记在初始和后续运行中使用 -t,那么这也会导致 rsync 必须读取并校验整个文件。
基本上,任何时候 rsync 必须写入所有内容(或几乎如此),那么 cp 就会获胜,因此您应该小心设置选项,以便它可以尽可能少地工作。
如果一个包含完全未改变文件的 rsync 没有在“统计”树中(在较慢的磁盘上)每个文件所需的时间内完成,那么您就做错了什么。
在慢速机器上使用 rsync 的其他问题是压缩和加密开销。您应该尽可能在 rsync 和 SSH 中禁用这些选项(或使它们与您用于 cp 的选项相匹配)。当然,SSH 不会完全禁用加密,但您可以在~/.ssh/config
(另一台机器上)调整密码;以下是我在 Synology 中使用的密码:
Host diskstation
Ciphers arcfour256
macs hmac-md5-96
其中“diskstation”是您的 NAS 的 IP 地址。