这些文件具有相同的 inode 编号,但 btrfs 将它们呈现在不同的(虚拟)文件系统中。检查“stat”输出,您应该看到设备不同。rsync 正确确定这些不是真正的硬链接。
如果你仔细想想,这是有道理的,因为如果你编辑一个文件,它的 inode 号不会改变(通常),但快照前后会显示不同的内容。
实现您想要的正确方法是从第一个快照内部执行正常的 rsync。然后从第二个快照执行另一个 rsync 到新的目标目录,但提供--link-dest=<first-dest-dir>
选项。这将创建一个带有硬链接到旧快照的新快照,只要文件相同。
例如
rsync -aH /.snapshot1/ dest1/
rsync -aH --link-dest=dest1/ /.snapshot2/ dest2/
rsync -aH --link-dest=dest2/ /.snapshot3/ dest3/
rsync -aH --link-dest=dest3/ /.snapshot4/ dest4/
rsync -aH --link-dest=dest4/ /.snapshot5/ dest5/
rsync -aH --link-dest=dest5/ /.snapshot6/ dest6/
您可以将其视为执行cp --link dest1 dest2
rsync 之前(只要您不使用,就会--inplace
产生类似的效果)。