我想将加密文件系统 (z/enc/a) 从一台计算机(源)复制到另一台计算机,并让其从目标系统的父文件系统继承加密密钥。同时我还想对其进行压缩,并保留快照。
我不想使用原始发送,因为我不想保留所有属性和加密密钥。
这似乎有效,其中@first 和@last 是第一个和最后一个快照:
ssh source sudo zfs send z/enc/a@first | sudo zfs receive -o compression=lz4 -x encryption z/enc/a
ssh source sudo zfs send z/enc/a@last -I @first | sudo zfs receive -F z/enc/a
这是可行的方法吗?
我使用以下方法检查了所需的属性:
zfs list -r -t all -o name,compression,encryption,encryptionroot z/enc/a
如果源文件系统未加密,我可以通过一次发送/接收对其进行压缩和加密,如下所示:
ssh source sudo zfs send -R z/t/a@last | sudo zfs receive -F -o compression=lz4 -x encryption z/enc/a
但是如果我使用加密数据集尝试此操作,则会收到错误:
ssh source sudo zfs send -R z/enc/a@last | sudo zfs receive -F -o compression=lz4 -x encryption z/enc/a
cannot send z/enc/a@last: encrypted dataset z/enc/a may not be sent with properties without the raw flag
这个 zfs 问题解释了为什么单次发送/接收不起作用。
因此,目前答案可能是需要两步发送/接收。