如果没有远程运行的守护进程,例如从通过SMB2(通过VPN)安装的驱动器复制到外部硬盘(USB 2.0,悲哀地),rsync(3.1.1)的好处让我感到困惑。 这两个连接都很慢(我的数据是〜1TB),但是我很困惑,如果压缩或仔细比较,如果所有这些都需要我的CPU在数据中读取数据,那么不会有什么问题? 这两个驱动器都是本地的。 (我无法通过rsyncreplace使用SSH的SMB连接,因为它无法处理我的密码。)或者即使使用远程驱动器,我也很疑惑,如果在另一端没有人执行压缩之前,rsync可以做到这一点,数据到达本地CPU。
这是一个合理的设置这样的副本? rsync -vhcrC --progress src dest
-c: Maybe checksums are a bad idea, file size and timestamp might be the only thing rsync can check without loading the data in in the first place. -h: human-readable output -v: verbose -C: skipping what CVS skips
遗漏:
-a: I am not interested in archiving, as files move from Windows to mac, permissions will change anyway, I think -z: this is the compression issue -W: sometimes copying whole-files-only use less of the CPU, but some files are really big here (~100GB), and an interrupted transfer is better restarted
注意:下面是所有理论 – 确定这是正确的在你的情况的真正正确的方法是运行各种组合的选项的testing。
rsync操作中的数据连接如下所示:
Source disk <-> rsync instance <-> other rsync instance <-> destination disk
一般来说,rsync是为第一个和最后一个链接(在rsync实例和它们的磁盘之间)速度较快而且中间链接(在rsync实例之间)速度较慢的情况而devise的。 -z (压缩)和-c (校验和文件决定要传送哪一个文件)尤其如此。 在两个rsyncs都在同一台计算机上(因此连接速度很快)的情况下,这些选项基本没有意义。
更具体地说: -z选项压缩中间链路上的数据,在两端交换较高的CPU负载,以便在中间链路上降低带宽需求。 如果中间链接的速度很快,则通过跳过此选项保存CPU。
至于-c选项,这会强制两个rsyncs读取所有不需要同步的文件, 以确保它们不需要同步。 如果其中一个或两个磁盘链接速度较慢,并且有很多文件已经同步,则会按比例减慢进程速度。 只要你不需要担心文件内容的改变而不改变时间戳,你应该避免这个。 请注意,除非您还添加了-t选项(或-a ),否则省略这个function的用处不大,因此它将复制时间戳 – 没有这些,它将不得不比较所有内容。
您可能还需要添加-W选项(只复制整个文件,跳过比较 – find – 只是更改),因为这将避免额外读取修改后的文件。 但是,这可能不是必须的,因为我熟悉的rsync的所有版本都会在源和目标被指定为本地path时自动执行此操作(即使其中一个本地path碰巧在networking中挂载点)。
简短摘要:删除-c ,添加-t和也许-W 。