当我使用 发送压缩的子卷(即使用挂载选项挂载的文件系统的一部分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。