Btrfsを試してみたいです。ライブシステムのスナップショットを作成できることを発見しましたが、まだ答えが見つからないいくつかのことがあります。さて、私が理解しているのは、スナップショットは基本的に何らかの形でアーカイブの完全なコピーです。では、ライブbtrfsシステムのスナップショットを作成し、そのスナップショットをbtrfsではなくハードドライブ(ext4など)に配置できますか?
また、フルディスク暗号化(luks)を実行しています。スナップショットを別の場所に転送すると暗号化されますか?スナップショットはパーティション自体の実際のデータをコピーします(この場合は明らかに暗号化されています)、それとも動作は異なりますか?
また、読み取りアクセスからbtrfsスナップショットを保護する方法は?他のユーザーがスナップショットを読むことはできますか?それとも単なるルートですか?管理できますか?
答え1
cp
「、、など」を使用できますが、Gilesの回答に追加します。rsync
読み取り専用サブボリューム/スナップショットを転送するには、コマンドを使用してサブbtrfs send
ボリュームをbtrfsストリームに送信して保存することもできます。Btrfs Wiki次の用途が挙げられます。
# btrfs subvolume snapshot -r / /my/snapshot-YYYY-MM-DD && sync
# btrfs send /my/snapshot-YYYY-MM-DD | ssh user@host btrfs receive /my/backups
# btrfs subvolume snapshot -r / /my/incremental-snapshot-YYYY-MM-DD && sync
# btrfs send -p /my/snapshot-YYYY-MM-DD /my/incremental-snapshot-YYYY-MM-DD |
ssh user@host btrfs receive /backup/home
ただし、後で使用するためにストリームを保存することもできます。
# btrfs subvolume snapshot -r / /my/snapshot-YYYY-MM-DD && sync
# btrfs send /my/snapshot-YYYY-MM-DD |
ssh user@host 'cat >/backup/home/snapshot-YYYY-MM-DD.btrfs'
# btrfs subvolume snapshot -r / /my/incremental-snapshot-YYYY-MM-DD && sync
# btrfs send -p /my/snapshot-YYYY-MM-DD /my/incremental-snapshot-YYYY-MM-DD |
ssh user@host 'cat >/backup/home/incremental-snapshot-YYYY-MM-DD.btrfs'
これは、任意のファイルシステムにbtrfsスナップショットをそのまま保存するのに役立ちます。これとは対照的に、スナップショットは増分式であり、デルタのみが送信されるという利点がtar
あります。btrfs
btrfs Wikiはこの増分バックアップ方法がrsync
。
答え2
スナップショットは(この意味では)ファイルシステムの一部です。 btrfs 用語ではサブボリュームです。つまり、ボリュームのディレクトリツリーの1つです。 「保存された形式」ではありません。サブボリュームのスナップショットを作成すると、スナップショットが作成された日付に基づいて元のボリュームのデータを含む新しいサブボリュームが作成されます。元のサブボリュームへの後続の書き込みはスナップショットに影響を与えず、その逆も同様です。すべてのサブボリュームは同じボリュームの一部です。これは、ボリューム内のデータの(重複可能な)サブセットを指定します。
サブボリュームのスナップショットの未変更部分はストレージを共有します。最初にスナップショットを作成するには、スナップショット制御データ以外のストレージは必要ありません。ストレージ量は、サブボリュームの内容に応じて時間の経過とともに増加します。
スナップショット作成の最も重要な属性は原子性です。つまり、ある時点のデータ写真を撮ります。これはバックアップを作成するのに便利です。バックアッププログラムがライブシステムからファイルをコピーすると、ファイルの変更と正しく対話できません。たとえば、ファイルをディレクトリAからディレクトリBに移動したが、バックアッププログラムが移動前にBを通過し、移動後にAを通過した場合、そのファイルはバックアップに含まれません。スナップショットはこの問題を解決します。移動前にスナップショットが作成された場合はファイルがAにあり、移動後にスナップショットが作成された場合、ファイルはBにありますが、どちらもそのまま残ります。これにより、バックアッププログラムはスナップショットから外部メディアにコピーできます。
スナップショットは元のボリュームと同じボリュームにあるため、同じ方法で保存されます。たとえば、ボリュームが暗号化されると、スナップショットも暗号化されます。
スナップショットは、権限やその他のすべてのメタデータを含む元のディレクトリツリーをコピーします。したがって、権限は以前と同じです。さらに、ユーザーにはスナップショットディレクトリ自体へのアクセス権が必要です。ユーザーがスナップショットにまったくアクセスできないようにするには、ユーザーがアクセスできないディレクトリにスナップショットを作成します(必要な場所にスナップショットを配置できます)。
ファイルシステムの外部からスナップショットのコピーを作成するには、Snapshotにアクセスするか、それをインストールしてお気に入りのプログラム(など)を使用してcp
コピーを作成しますrsync
。例のコマンドは以下にあります。ウィキペディア;完全な参照については、マニュアルページを参照してください。