使用 rsync 从包含大量相同文件的两个位置进行备份

使用 rsync 从包含大量相同文件的两个位置进行备份

我有 2 个 1TB 的外部存储设备,我想将所有这些备份到服务器上。我想使用 rsync 来执行此操作,但我发现每个设备上的约 100,000 个文件中,约 80,000 个文件是相同的(具有相同的名称和目录路径)。我可以分别对这两个文件进行 rsync,这将合并文件,但我想要一种方法来找出“相互”文件是否包含相同的内容,因为我不想丢失修改后的文件(如果它们已被修改)。有没有办法使用 rsync 检查这一点?

答案1

您可以考虑使用 rsync 的“-c”标志来检查文件的校验和。如果mod时间和大小相同。然后它会进行校验和以确定文件是否具有相同的内容。更多内容请看这里 ==>https://serverfault.com/questions/211005/rsync-difference- Between-checksum-and-ignore-times-options

答案2

随后,要仅同步远程计算机上已在本地计算机上更改的更新或修改的文件,我们可以在复制文件之前执行试运行,如下所示:

rsync -av --dry-run --update Documents/* [email protected]:/<directory>

如果结果没问题,使用这个

rsync -av --update Documents/* [email protected]:/<directory>

欲了解更多信息,请参阅:http://www.howtoing.com/sync-new-changed-modified-files-rsync-linux/

答案3

对于这两种传输,您可以使用:

rsync --ignore-existing -i dir1/ [email protected]:/dir2/

对于第一次传输,它只会传输所有文件并列出它们。

对于第二次传输,它将忽略已存在的文件 ( --ignore-existing) 并列出它实际复制的所有文件 ( -i)。然后,您可以选择通过使用获取所有文件的列表来复制传输中遗漏的文件find,并删除传输 2 的输出中列出的文件。

不幸的是,如果文件已经存在,则无法将其复制到稍微不同的文件名,这将需要一些额外的逻辑和循环。

相关内容