使用 btrfs-send / btrfs-receive 进行压缩

Ger*_*mia 5 compression btrfs

当我使用 发送压缩的 subvol(即,使用compress挂载选项安装的文件系统的一部分)时btrfs-send,是btrfs-send将其压缩发送还是先解压缩?

同样,当我收到带有 的 subvol 时btrfs-receive,是否btrfs-receive重新压缩?

Arc*_*nge 5

btrfs-send将执行read系统调用,这意味着它确实会解压缩数据。然后数据在未压缩的情况下流式传输,btrfs-receive并将执行write系统调用,这将根据目标btrfs系统compress安装选项进行压缩。

因此,例如,您可以拥有一个现有btrfs系统,该系统对不同文件进行了各种压缩,然后写入一个新系统,其中所有数据都将被zstd压缩。


Tom*_*ale 2

--compressed-data直接发送文件系统上压缩的数据而不解压

如果接收方支持BTRFS_IOC_ENCODED_WRITE ioctl(Linux 6.0中添加),也可以直接写入,无需解压。否则,接收器将回退到解压缩并正常写入。

这需要协议版本 2 或更高版本。如果未使用 --proto,则 --compressed-data 意味着 --proto 2。

https://btrfs.readthedocs.io/en/latest/btrfs-send.html