我每天将文件复制到不同的XFS卷中,如下所示:
# on monday
cp --sparse=always /mnt/disk1/huge.file /mnt/disk2/monday/huge.file
# on tuesday
cp --sparse=always /mnt/disk1/huge.file /mnt/disk2/tuesday/huge.file现在它占据了disk2上两个文件的全部大小。
在同一个分区上,我通常使用--reflink=auto,因此复制的文件共享碎片,只占用更改的块。但是,如果目的地位于不同的卷上,这是不起作用的,所以我需要一个reflink两个已经存在的副本的解决方案。
遗憾的是,cp并不像rsync (不支持reflink )那样只复制已更改的块,否则我会这样做:
# on monday
cp --sparse=always /mnt/disk1/huge.file /mnt/disk2/huge.file
cp --reflink=always /mnt/disk2/huge.file /mnt/disk2/monday/huge.file
# on tuesday
cp --sparse=always /mnt/disk1/huge.file /mnt/disk2/huge.file
cp --reflink=always /mnt/disk2/huge.file /mnt/disk2/tuesday/huge.file发布于 2022-05-14 17:24:58
我不知道xfs,但是btrfs有一个用于去重复的命令。请参阅https://btrfs.wiki.kernel.org/index.php/Deduplication
您可以独立于副本运行一个去重复步骤。
要做你直接要求的事情,你可以逆转你的过程。
类似于:
希望只有未修改的块将在星期一和星期二的备份之间按要求共享。
警告:我还没有试过这个,也不知道它真的会做你想做的事。
这可能与此无关,但也有一些关于将reflink支持直接添加到rsync的讨论。请参见:
我对那里的问题不太清楚。
https://unix.stackexchange.com/questions/689508
复制相似问题