zfs send コマンドを使用して、スナップショットストリームのコピーを送信し、バックアップデータの格納に使用する別のプール (同じシステム上または別のシステム上にある) でそのスナップショットストリームを受信することができます。たとえば、異なるプール上のスナップショットストリームを同じシステムに送信するには、次のような構文を使用します。
# zfs send tank/dana@snap1 | zfs recv spool/ds01
zfs receive コマンドの別名として、zfs recv を 使用できます。
スナップショットストリームを別のシステムに送信する場合は、zfs send の出力を ssh コマンドにパイプします。例:
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) は以前のスナップショットで、2 番目の引数 (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 には @ 記号のあとの名前を指定するだけでよいことを意味し、この場合 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