如何在不保留加密密钥的情况下复制加密的 zfs 文件系统

如何在不保留加密密钥的情况下复制加密的 zfs 文件系统

我想将加密文件系统 (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 问题解释了为什么单次发送/接收不起作用。

因此,目前答案可能是需要两步发送/接收。

相关内容