通过管道进行就地增量写入

通过管道进行就地增量写入

我正在寻找一种方法来仅覆盖文件中与应该写入的内容不同的部分,以便以尽可能少的磁盘写入量来更改文件。

我的计划是在将 NTFS 分区备份到映像文件时进行一些重复数据删除,方法是将该映像文件作为 BTRFS 上先前备份映像的重新链接副本。
(将其视为无需更改原始文件即可写入的硬链接)

我通过管道将 NTFS 分区中未使用的部分填充为零partclone,因此输入是管道而不是设备。
可以将其视为

cat /dev/sda4 | command -i - -o newbackup.img

command我要找的是哪个newbackup.img文件,该文件已经包含 894GiB 的数据,与输入的数据大致相同,但图像文件的实际磁盘使用量等于被覆盖的块数量。

rsync可以通过--no-whole-file --inplace参数(IIRC)做到这一点,这要归功于它的增量传输,但它不必要地慢(不同时读取和输出,在单个线程上处理增量,并且通常非常这很不经济),rsync也不适用于管道(据我所知),所以这是不可能的。

相关内容