ZFS ファイルシステムまたはボリュームのスナップショットは、zfs send コマンドを使用してスナップショットストリームに変換されます。続いて、zfs receive コマンドを使用することにより、このスナップショットストリームを使用して、ZFS ファイルシステムまたはボリュームを再作成できます。
スナップショットストリームの作成で使用された zfs send オプションに応じて、さまざま種類のストリーム形式が生成されます。
完全なストリーム – データセットが作成された時間から指定されたスナップショットまで、すべてのデータセットの内容から構成されます。
zfs send コマンドで生成されたデフォルトのストリームが完全なストリームです。これには、1 つのファイルシステムまたはボリュームから指定されたスナップショットまで含まれます。ストリームには、コマンド行で指定されたスナップショット以外のスナップショットは含まれません。
増分ストリーム – あるスナップショットと別のスナップショットの差から構成されます。
ストリームパッケージとは、1 つ以上の完全ストリームまたは増分ストリームを含んだストリームタイプです。次の 3 つの種類のストリームパッケージが存在します。
レプリケーションストリームパッケージ – 指定したデータセットとその子孫から構成されます。すべての中間スナップショットを含みます。クローンが作成されたデータセットの複製元が、コマンド行で指定されたスナップショットの子孫ではない場合、この複製元のデータセットはストリームパッケージには含まれません。ストリームを受信するには、元のデータセットが受信先のストレージプールに存在する必要があります。
次のデータセットとその複製元の一覧を考慮してください。これらのデータセットが、下に示された順番で作成されたとします。
NAME ORIGIN pool/a - pool/a/1 - pool/a/1@clone - pool/b - pool/b/1 pool/a/1@clone pool/b/1@clone2 - pool/b/2 pool/b/1@clone2 pool/b@pre-send - pool/b/1@pre-send - pool/b/2@pre-send - pool/b@send - pool/b/1@send - pool/b/2@send -
次の構文で作成された複製ストリームパッケージは、
# zfs send -R pool/b@send ....
次の完全および増分ストリームから構成されます。
TYPE SNAPSHOT INCREMENTAL FROM full pool/b@pre-send - incr pool/b@send pool/b@pre-send incr pool/b/1@clone2 pool/a/1@clone incr pool/b/1@pre-send pool/b/1@clone2 incr pool/b/1@send pool/b/1@send incr pool/b/2@pre-send pool/b/1@clone2 incr pool/b/2@send pool/b/2@pre-send
前の出力で、pool/a/1@clone スナップショットは、複製ストリームパッケージに含まれていません。したがって、このレプリケーションストリームパッケージは、すでに pool/a/1@clone スナップショットがあるプールでのみ受信できます。
再帰的ストリームパッケージ – 指定したデータセットとその子孫から構成されます。複製ストリームパッケージとは異なり、ストリームに含まれる複製されたデータセットの複製元でないかぎり、中間スナップショットは含まれません。デフォルトでは、データセットの複製元がコマンド行で指定されたスナップショットの子孫でない場合、動作は複製ストリームと同じようになります。ただし、自己完結型の再帰的ストリームは、次に説明するとおり、外部の依存関係がないような方法で作成されます。
次の構文で作成された再帰的ストリームパッケージは、
# zfs send -r pool/b@send ...
次の完全および増分ストリームから構成されます。
TYPE SNAPSHOT INCREMENTAL FROM full pool/b@send - incr pool/b/1@clone2 pool/a/1@clone incr pool/b/1@send pool/b/1@clone2 incr pool/b/2@send pool/b/1@clone2
前の出力で、pool/a/1@clone スナップショットは、再帰的ストリームパッケージに含まれていません。したがって、この再帰的ストリームパッケージは、すでに pool/a/1@clone スナップショットがあるプールでのみ受信できます。この動作は、前述の複製ストリームパッケージの場合と似ています。
自己完結型の再帰的ストリームパッケージ - ストリームパッケージに含まれないデータセットに依存しません。この再帰的ストリームパッケージは次の構文で作成されます。
# zfs send -rc pool/b@send ...
次の完全および増分ストリームから構成されます。
TYPE SNAPSHOT INCREMENTAL FROM full pool/b@send - full pool/b/1@clone2 incr pool/b/1@send pool/b/1@clone2 incr pool/b/2@send pool/b/1@clone2
自己完結型の再帰的ストリームは、pool/b/1@clone2 スナップショットの完全なストリームを含んでいるため、外的な依存関係なしに pool/b/1 スナップショットを受信できます。