RSYNC 和文件夹层次结构

RSYNC and folder hierachcy

在使用 dd 对硬盘驱动器进行完整取证复制后,我想跟上原始硬盘和备份硬盘之间的变化,因此我开始使用 rsync。

每当我运行

sync -a -v -n  --progress /media/drive1 /media/drive2

该命令将开始列出驱动器 1 中包含的所有文件。然而,在我做了 DD 之后,只有几个改变了。

在单个文件夹上尝试

sync -a -v -n  --progress /media/drive1/folder /media/drive2

工作正常,只显示该文件夹中的新文件 - /media/drive2/folder 中不包含的文件。

但是,在两个卷的级别上执行命令

sync -a -v -n --progress /media/drive1 /media/drive2

不考虑差异,与随处可用的文档相反,但会获取两个驱动器上已有的所有文件。
我的错误是什么?

rsync 处理源路径和目标路径的方式很容易出错。当你使用命令时:

sync -a -v -n  --progress /media/drive1 /media/drive2

...它尝试将 drive1 文件夹 同步到 drive2;也就是说,它创建并填充 /media/drive2/drive1。当您将“/文件夹”添加到源路径时,它会按预期工作,因为它会尝试与 /media/drive2/folder 同步,这正是您想要的。

幸运的是,解决方案很简单:在源路径的末尾添加“/”,告诉它将驱动器1的内容同步到驱动器2,而不是文件夹本身:

sync -a -v -n  --progress /media/drive1/ /media/drive2

顺便说一句,我建议添加 --dry-run 以确保它在 运行 之前添加 "for real" 以确保它正在执行您想要的操作。您可能还必须删除 /media/drive2/drive1.