Oracle Solaris ZFS 管理指南

发送 ZFS 快照

可以使用 zfs send 命令来发送某个快照流的副本,并在同一系统的另一个池中或用于存储备份数据的不同系统上的另一个池中接收快照流。例如,要将不同池上的快照流发送到同一系统,请使用类似如下的语法:


# zfs send tank/data@snap1 | zfs recv spool/ds01

可以将 zfs recv 用作 zfs receive 命令的别名。

如果要将快照流发送到不同的系统,请通过 ssh 命令传输 zfs send 输出。例如:


host1# zfs send tank/dana@snap1 | ssh host2 zfs recv newtank/dana

发送完整的流时,目标文件系统必须不能存在。

使用 zfs send -i 选项可以发送增量数据。例如:


host1# zfs send -i tank/dana@snap1 tank/dana@snap2 | ssh host2 zfs recv newtank/dana

请注意,第一个参数 (snap1) 是较早的快照,第二个参数 (snap2) 是较晚的快照。这种情况下,newtank/dana 文件系统必须已经存在,增量接收才能成功。

可将增量 snap1 源指定为快照名称的最后一个组成部分。此快捷方式意味着只需在 @ 符号后指定 snap1 的名称,假定它与 snap2 都来自同一文件系统。例如:


host1# zfs send -i snap1 tank/dana@snap2 > ssh host2 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