我使用命令“Rsync”将大量数据从文件系统传输到 nfs(大约 1Tera)。
过了一会儿,电脑关机,传输取消(600G传输大约需要10个小时)。
一些已上传的文件系统已被用户更改/添加。我想知道,如果我再次使用 Rsync,而不删除部分传输,它将知道忽略该 Transferres 文件,并重新上传已更改的内容。
PS如果有恢复Rsync的选项,传输的文件会比第一次上传的速度更快吗?我很担心,因为我传输 600G 花了 10 个小时,我希望下一次 Rsync 会快得多。
编辑:显然我无法评论答案......所以我使用了@Kusalananda rsync -rtzvx
。
答案1
您没有使用这些-a
选项,因此用户和组所有权以及权限均未保留。然而,时间戳是由于使用了-t
.
当您现在重新启动 rsync 时,它将无法使用上述元数据来确定目标上的文件与源上的文件是否相同。如果你觉得幸运,你可以使用--size-only
,它告诉 rsync 如果大小相同则假设文件是相同的;这通常只适用于日志文件或照片等内容。
然而,事情可能并不像您想象的那么糟糕:rsync 将对源和目标上的每个文件进行校验和,并且只有当校验和显示差异时才会传输不同的块。即,不会再次传输整个文件,仅传输更改的块。这就是 rsync 的优势:以更多磁盘 IO 为代价优化网络带宽使用。
当然,这是假设 rsync 正在通过网络传输到另一台主机。如果您所说的 NFS 文件系统是本地安装的,那么 rsync 可能不是用于此目的的工具,因为 rsync 在检查文件时实际上会使用更多的网络带宽。此外,在进行本地传输时,rsync 会切换到--whole-file
模式,因为首先检查整个源文件和目标文件,然后将源文件复制到目标文件是没有意义的。
一般来说,如果可能的话,我会建议使用-a
。--numeric-ids
如果源和目的地有不同的用户,您可能需要将其合并;如果您有相同的用户但 ID 可能不同,则不要使用--numeric-ids
,rsync 会根据名称映射 ID。