En esta sección se describe cómo utilizar las opciones zfs send -I y -R para enviar y recibir flujos de instantáneas más complejos.
Al enviar y recibir flujos de instantáneas ZFS complejos, tenga en cuenta los puntos siguientes:
Utilice la opción zfs send -I para enviar todos los flujos incrementales de una instantánea a una instantánea acumulativa. Utilice también esta opción para enviar un flujo incremental de la instantánea original para crear un clon. Para que se acepte el flujo incremental, la instantánea original ya debe estar en la parte receptora.
Utilice la opción zfs send -R para enviar un flujo de repetición de todos los sistemas de archivos descendientes. Cuando se recibe el flujo de repetición, se conservan todas las propiedades, las instantáneas, los sistemas de archivos descendientes y los duplicados.
Utilice ambas opciones para enviar un flujo de repetición incremental.
Se mantienen los cambios de propiedades y también las operaciones rename y destroy de instantáneas y sistemas de archivos.
Si no se especifica zfs recv -F al recibir el flujo de repetición, se omiten las operaciones destroy de conjuntos de datos. La sintaxis zfs recv -F en este caso también mantiene su propiedad de aplicar rollback (inversión) si es preciso.
Al igual que en otros casos (que no sean zfs send -R) - i o -I, si se utiliza -I, se envían todas las instantáneas entre snapA y snapD. Si se utiliza -i, sólo se envía snapD (para todos los descendientes).
Para recibir cualquiera de estos nuevos tipos de flujos zfs send, el sistema receptor debe ejecutar una versión del software capaz de enviarlos. La versión del flujo se incrementa.
Sin embargo, puede acceder a los flujos desde versiones de agrupaciones más antiguas utilizando una versión del software más reciente. Por ejemplo, puede enviar y recibir flujos creados con las opciones más recientes a o desde una agrupación de la versión 3. Sin embargo, debe ejecutar software reciente para recibir un flujo enviado con las opciones más recientes.
Un grupo de instantáneas incrementales se puede combinar en una instantánea utilizando la opción zfs send -I. Por ejemplo:
# zfs send -I pool/fs@snapA pool/fs@snapD > /snaps/fs@all-I |
Luego deberá eliminar snapB, snapC y snapD.
# zfs destroy pool/fs@snapB # zfs destroy pool/fs@snapC # zfs destroy pool/fs@snapD |
Para recibir la instantánea combinada, use el siguiente comando.
# zfs receive -d -F pool/fs < /snaps/fs@all-I # zfs list NAME USED AVAIL REFER MOUNTPOINT pool 428K 16.5G 20K /pool pool/fs 71K 16.5G 21K /pool/fs pool/fs@snapA 16K - 18.5K - pool/fs@snapB 17K - 20K - pool/fs@snapC 17K - 20.5K - pool/fs@snapD 0 - 21K - |
También puede utilizar el comando zfs send -I para combinar una instantánea y una instantánea clónica para crear un conjunto de datos combinado. Por ejemplo:
# zfs create pool/fs # zfs snapshot pool/fs@snap1 # zfs clone pool/fs@snap1 pool/clone # zfs snapshot pool/clone@snapA # zfs send -I pool/fs@snap1 pool/clone@snapA > /snaps/fsclonesnap-I # zfs destroy pool/clone@snapA # zfs destroy pool/clone # zfs receive -F pool/clone < /snaps/fsclonesnap-I |
Puede utilizar el comando zfs send -R para repetir un sistema de archivos ZFS y todos los sistemas de archivos descendientes, hasta la instantánea en cuestión. Cuando se recibe este flujo, se conservan todas las propiedades, las instantáneas, los sistemas de archivos descendientes y los duplicados.
En el ejemplo siguiente, se crean instantáneas de los sistemas de archivos de usuario. Se crea un flujo de repetición de todas las instantáneas de usuario. A continuación, se destruyen y se recuperan las instantáneas y los sistemas de archivos originales.
# zfs snapshot -r users@today # zfs list NAME USED AVAIL REFER MOUNTPOINT users 187K 33.2G 22K /users users@today 0 - 22K - users/user1 18K 33.2G 18K /users/user1 users/user1@today 0 - 18K - users/user2 18K 33.2G 18K /users/user2 users/user2@today 0 - 18K - users/user3 18K 33.2G 18K /users/user3 users/user3@today 0 - 18K - # zfs send -R users@today > /snaps/users-R # zfs destroy -r users # zfs receive -F -d users < /snaps/users-R # zfs list NAME USED AVAIL REFER MOUNTPOINT users 196K 33.2G 22K /users users@today 0 - 22K - users/user1 18K 33.2G 18K /users/user1 users/user1@today 0 - 18K - users/user2 18K 33.2G 18K /users/user2 users/user2@today 0 - 18K - users/user3 18K 33.2G 18K /users/user3 users/user3@today 0 - 18K - |
En el ejemplo siguiente, el comando zfs send -R se ha usado para repetir el conjunto de datos users y sus descendientes y para enviar a otra agrupación el flujo repetido, users2.
# zfs create users2 mirror c0t1d0 c1t1d0 # zfs receive -F -d users2 < /snaps/users-R # zfs list NAME USED AVAIL REFER MOUNTPOINT users 224K 33.2G 22K /users users@today 0 - 22K - users/user1 33K 33.2G 18K /users/user1 users/user1@today 15K - 18K - users/user2 18K 33.2G 18K /users/user2 users/user2@today 0 - 18K - users/user3 18K 33.2G 18K /users/user3 users/user3@today 0 - 18K - users2 188K 16.5G 22K /users2 users2@today 0 - 22K - users2/user1 18K 16.5G 18K /users2/user1 users2/user1@today 0 - 18K - users2/user2 18K 16.5G 18K /users2/user2 users2/user2@today 0 - 18K - users2/user3 18K 16.5G 18K /users2/user3 users2/user3@today 0 - 18K - |
Los comandos zfs send y zfs recv se utilizan para copiar de forma remota una representación de flujos de datos de instantánea de un sistema a otro. Por ejemplo:
# zfs send tank/cindy@today | ssh newsys zfs recv sandbox/restfs@today |
Este comando envía los datos de instantánea tank/cindy@today y los recibe en el sistema de archivos sandbox/restfs. El comando también crea una instantánea restfs@today en el sistema newsys. En este ejemplo, se ha configurado al usuario para que utilice el comando ssh en el sistema remoto.