可以使用 zfs send 命令来发送某个快照流的副本,并在同一系统的另一个池中或用于存储备份数据的不同系统上的另一个池中接收快照流。例如,要将不同池的快照流发送到同一系统,请使用类似如下的语法:
# zfs send tank/dana@snap1 | zfs recv spool/ds01
可以将 zfs recv 用作 zfs receive 命令的别名。
如果要将快照流发送到不同的系统,请通过 ssh 命令传输 zfs send 输出。例如:
sys1# zfs send tank/dana@snap1 | ssh sys2 zfs recv newtank/dana
发送完整的流时,目标文件系统必须不能存在。
使用 zfs send –i 选项可以发送增量数据。例如:
sys1# zfs send -i tank/dana@snap1 tank/dana@snap2 | ssh sys2 zfs recv newtank/dana
第一个参数 (snap1) 是较早的快照,第二个参数 (snap2) 是较晚的快照。这种情况下,newtank/dana 文件系统必须已经存在,增量接收才能成功。
cannot receive incremental stream of tank/dana@snap2 into newtank/dana: most recent snapshot of tank/dana@snap2 does not match incremental source
如果需要访问原始接收文件系统中的文件信息,同时还需要将增量快照接收到该接收文件系统中,请考虑将 atime 属性设置为 off。
可将增量 snap1 源指定为快照名称的最后一个组成部分。此快捷方式意味着只需在 @ 符号后指定 snap1 的名称,假定它与 snap2 都来自同一文件系统。例如:
sys1# zfs send -i snap1 tank/dana@snap2 | ssh sys2 zfs recv newtank/dana
这一快捷方式语法等效于上例中的增量语法。
尝试从其他文件系统 snapshot1 生成增量流时,将显示以下消息:
cannot send 'pool/fs@name': not an earlier snapshot from the same fs
如果需要存储许多副本,可以考虑使用 gzip 命令压缩 ZFS 快照流表示。例如:
# zfs send pool/fs@snap | gzip > backupfile.gz