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

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

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

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

答案1

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

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

答案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

相关内容