zfs 发送多个快照

zfs 发送多个快照

我想将几个 zfs 快照发送到另一个池。源池“rpool”,目标池“dpool”

rpool/kvm1380_img                               88,6G  1,48T     77,6G  -
rpool/kvm1380_img@snapshot_Sun_01_11_weekly     1,33G      -     77,6G  -
rpool/kvm1380_img@snapshot_Mon_02_11             746M      -     77,6G  -
rpool/kvm1380_img@snapshot_Tue_03_11             600M      -     77,5G  -
rpool/kvm1380_img@snapshot_Wed_04_11             843M      -     77,5G  -

我知道如何逐个发送快照,例如:

zfs send -i rpool/kvm1380_img@snapshot_Sun_01_11_weekly rpool/kvm1380_img@snapshot_Mon_02_11 | zfs recv dpool/kvm1380_img@snapshot_Mon_02_11

下一个:

zfs send -i rpool/kvm1380_img@snapshot_Mon_02_11 rpool/kvm1380_img@snapshot_Tue_03_11 | zfs recv dpool/kvm1380_img@snapshot_Tue_03_11

等等...

但我想一次发送所有快照以获得与 rpool 相同的所有内容:

dpool/kvm1380_img                               88,6G  1,48T     77,6G  -
dpool/kvm1380_img@snapshot_Sun_01_11_weekly     1,33G      -     77,6G  -
dpool/kvm1380_img@snapshot_Mon_02_11             746M      -     77,6G  -
dpool/kvm1380_img@snapshot_Tue_03_11             600M      -     77,5G  -
dpool/kvm1380_img@snapshot_Wed_04_11           

怎么做?

答案1

除了-i选项之外,您还可以使用-I发送包含一整套多个快照的增量流的选项

生成一个流包,将所有中间快照从第一个快照发送到第二个快照。例如,-I @a fs@d类似于-i @a fs@b; -i @b fs@c; -i @c fs@d。可以使用 -i 选项指定增量源。

例如:

zfs 发送 -i rpool/kvm1380_img@snapshot_Sun_01_11_weekly rpool/kvm1380_img@snapshot_ Wed_04_11 | zfs 接收 ...

该示例将把每个快照从snapshot_Sun_01_11_weekly发送到snapshot_ Wed_04_11

或者,您可以发送-R使用选项的完整复制流

生成复制流包,它将复制指定的文件系统以及所有后代文件系统,直至指定的快照。收到后,所有属性、快照、后代文件系统和克隆都会保留。

像这样:

zfs snapshot -r rpool/kvm1380_img@latest
zfs send -R rpool/kvm1380_img@latest | zfs recv dpool/kvm1380_img

目标 ZFS 文件系统和实际zfs recv ...命令可能会有所不同。例如,您可能希望将-u和/或添加-o canmount=noauto到命令中zfs recv,以防止系统尝试挂载接收到的文件系统。

如果您要以这种方式发送完整的复制流,最好将该流接收到一个全新的 ZFS 文件系统中。尝试将完整的复制流覆盖在现有 ZFS 文件系统之上可能会很麻烦且难以管理。

相关内容