zfs send multiple snapshots
I want send several zfs snapshots to another pool. Source pool "rpool", target pool "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 -
I know how send one by one snapshot like:
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
the next one:
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
and so on...
but I want send all snapshots at once to get everything same like 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
How to do that?
Instead of the -i
option, you can use the -I
option to send an incremental stream that includes an entire set of multiple snapshots:
Generate a stream package that sends all intermediary snapshots from the first snapshot to the second snapshot. For example,
-I @a fs@d
is similar to-i @a fs@b; -i @b fs@c; -i @c fs@d
. The incremental source may be specified as with the -i option.
For example:
zfs send -i rpool/kvm1380_img@snapshot_Sun_01_11_weekly rpool/kvm1380_img@snapshot_ Wed_04_11 | zfs recv ...
That example will send every snapshot from snapshot_Sun_01_11_weekly
to snapshot_ Wed_04_11
.
Or, you can send a full replication stream using the -R
option:
Generate a replication stream package, which will replicate the specified file system, and all descendent file systems, up to the named snapshot. When received, all properties, snapshots, descendent file systems, and clones are preserved.
Something like this:
zfs snapshot -r rpool/kvm1380_img@latest
zfs send -R rpool/kvm1380_img@latest | zfs recv dpool/kvm1380_img
The target ZFS filesystem and the actual zfs recv ...
command may vary. You might, for example, want to add the -u
and/or the -o canmount=noauto
to the zfs recv
command to prevent the system from trying to mount the received filesystem(s).
And if you're going to send a full replication stream this way, it's probably best to receive the stream into a completely new ZFS filesystem. Trying to overlay a full replication stream over the top of an existing ZFS filesystem can be troublesome and hard to manage.