您可以发送带有特定文件系统属性值的 ZFS 快照流,但在接收快照流时,可以指定不同的本地属性值。或者,您可以指定收到快照流时使用原始属性值以重新创建原始文件系统。此外,收到快照流时,还可以禁用文件系统属性。
使用 zfs inherit –S 将本地属性值恢复为接收值(如有)。如果属性没有接收值,则 zfs inherit – S 命令的行为与不带 –S 选项的 zfs inherit 命令相同。如果属性有接收值,则 zfs inherit 命令会用继承的值覆盖接收的值,直到发出 zfs inherit –S 命令将其恢复为接收的值。
可以使用 zfs get –o 以包括新的非缺省栏 RECEIVED。或者,可以使用 zfs get –o all 命令以包括所有栏,其中包括 RECEIVED。
您可以使用 zfs send –p 选项以包括发送流中的属性,而无需使用 –R 选项。
可以使用 zfs receive –e 选项来利用所发送的快照名的最后一个元素确定新的快照名。以下示例将 poola/bee/cee@1 快照发送给 poold/eee 文件系统,并仅利用快照名的最后一个元素 (cee@1) 创建接收的文件系统和快照。
# zfs list -rt all poola NAME USED AVAIL REFER MOUNTPOINT poola 134K 134G 23K /poola poola/bee 44K 134G 23K /poola/bee poola/bee/cee 21K 134G 21K /poola/bee/cee poola/bee/cee@1 0 - 21K - # zfs send -R poola/bee/cee@1 | zfs receive -e poold/eee # zfs list -rt all poold NAME USED AVAIL REFER MOUNTPOINT poold 134K 134G 23K /poold poold/eee 44K 134G 23K /poold/eee poold/eee/cee 21K 134G 21K /poold/eee/cee poold/eee/cee@1 0 - 21K -
在某些情况下,发送流中的文件系统属性可能不适用于接收方文件系统,或者本地文件系统属性(如 mountpoint 属性值)可能会干扰恢复。
例如,tank/data 文件系统禁用了 compression 属性。tank/data 文件系统的一个快照在发送到备份池时带有属性(–p 选项),在接收该快照时启用了 compression 属性。
# zfs get compression tank/data NAME PROPERTY VALUE SOURCE tank/data compression off default # zfs snapshot tank/data@snap1 # zfs send -p tank/data@snap1 | zfs recv -o compression=on -d bpool # zfs get -o all compression bpool/data NAME PROPERTY VALUE RECEIVED SOURCE bpool/data compression on off local
在该示例中,bpool 池接收快照时启用了 compression 属性。因此 bpool/data 的 compression 值为 on。
如果将此快照流发送到新池 restorepool 以用于恢复,您可能要保留所有原始的快照属性。在这种情况下,可使用 zfs send –b 命令恢复原始的快照属性。例如:
# zfs send -b bpool/data@snap1 | zfs recv -d restorepool # zfs get -o all compression restorepool/data NAME PROPERTY VALUE RECEIVED SOURCE restorepool/data compression off off received
在该示例中,"compression" 的值是 off,代表来自原始 tank/data 文件系统的快照的 "compression" 值。
如果快照流中有本地文件系统属性值,而您希望在接收快照流时禁用该属性,可使用 zfs receive –x 命令。例如,以下命令发送一个起始目录文件系统的递归快照流,并将所有文件系统属性保留到备份池,但没有配额属性值:
# zfs send -R tank/home@snap1 | zfs recv -x quota bpool/home # zfs get -r quota bpool/home NAME PROPERTY VALUE SOURCE bpool/home quota none local bpool/home@snap1 quota - - bpool/home/lori quota none default bpool/home/lori@snap1 quota - - bpool/home/mark quota none default bpool/home/mark@snap1 quota - -
如果未使用 –x 选项接收该递归快照,将在接收方文件系统设置配额属性。
# zfs send -R tank/home@snap1 | zfs recv bpool/home # zfs get -r quota bpool/home NAME PROPERTY VALUE SOURCE bpool/home quota none received bpool/home@snap1 quota - - bpool/home/lori quota 10G received bpool/home/lori@snap1 quota - - bpool/home/mark quota 10G received bpool/home/mark@snap1 quota - -