/ homeパーティションは物理ディスク全体で構成されています。 btrfsとしてフォーマットされています。スナップショットを撮りたいです。特にサブボリュームの命名に関して混乱しています。
私は似たような質問があることを知っていますが、それぞれの似た質問は私が尋ねているものと異なる異なるを求めているようですbtrfsの急速な開発を考えると、おそらく時代遅れを意味します)。たとえば、 この質問 に対する回答は、私の質問に対する回答ではないようです。これは、/ homeパーティションが別のボリュームであり、btrfsのmanページにスナップショットを作成するための別のコマンドが表示されるためです。
別の同様の問題、固執なし 。
ネーミングの問題で私と同じくらい混乱している人
シンプルな開始:これは、ホームパーティションのシンプルなスナップショットを撮る正しいコマンドですか?
btrfs subvolume snapshot /home/@home /home/@home_snapshot_20120421
私は本当に勇敢になってテストしましたが、うまくいきません。エラーはerror accessing /home/@home
です。以下に示すように、@ homeがリストされます。
私は明らかにサブボリューム名で混乱しています。スナップショットの作成にそれらを使用する必要がありますか?ソースパラメータとして/home
を使用して家のスナップショットを撮る例を示していますが、ルートボリュームの例に基づいて、/home/@home
を使用する必要があるように思われます。
このコマンドは機能しますか?そうでない場合、なぜですか?
btrfs subvolume snapshot /home /home/@home_snapshot_20120421
@
は単なる命名規則ですか?それはまったく意味がありますか?
関連する可能性のある出力を次に示します。
btrfs subvolume list /home
ID 256 top level 5 path @home
それが何を意味するのか正確にはわかりません。 btrfs device scan
を試すとエラーが発生します(たとえば、デバイス/ dev/sda1をスキャンできません)。ファイルシステムにエラーはありません。すべて順調。
これが私のパーティションです。 1つの応答に対して、/ homeだけが私のbtrfsパーティションではありません。
/dev/sda1: (boot partition) TYPE="ext2"
/dev/sda2: (root partition) TYPE="btrfs"
/dev/sdb1: (home partition) TYPE="btrfs"
/dev/sdc1: (shared partition) TYPE="btrfs"
/dev/sdc2: TYPE="swap"
ホームがbtrfsパーティション上にあり、/ homeとしてマウントされているという事実を考えると、正しいコマンドは次のとおりです。
Sudo btrfs subvolume snapshot /home/ /home/<any_name_you_choose_for_the_snapshot>
私の結果は次のとおりです。
今日コマンドを実行する前に:
$ btrfs subvolume list /home
ID 256 top level 5 path @home
ID 257 top level 5 path @home/@snapshot_20120521_1936
コマンド:
$ Sudo btrfs subvolume snapshot /home/ /home/@snapshot_20120611_1307
Create a snapshot of '/home/' in '/home/@snapshot_20120611_1307'
今日コマンドを実行した後:
$ btrfs subvolume list /home
ID 256 top level 5 path @home
ID 257 top level 5 path @home/@snapshot_20120521_1936
ID 258 top level 5 path @home/@snapshot_20120611_1307
この方法の唯一の問題は、/ homeをls(一覧表示)するとスナップショットが表示されることです。
UbuntuコミュニティWikiは、このためのソリューションで更新されました。ここにあります:
buntuのレイアウトでスナップショットを操作する方法
Ubuntuレイアウトで/または/ homeのスナップショットを操作するには、btrfsファイルシステムを別の場所にマウントし、マウントされたサブボリュームからではなく、btrfsツリーの最上部から作業することが非常に便利です。 <-それが解決策です。残念ながら、便利ではありません。
Sudo mount /dev/sdX# /mnt
スナップショットを作成するには、上記で使用したものと同じ構文を使用します。
Sudo btrfs subvolume snapshot /mnt/@ /mnt/@_snapshot
これにより、btrfsツリーの最上部にある@_snapshotという名前の@サブボリュームのスナップショットが作成されます。ツリーの最上部にあるため、マウントされたボリューム内のファイルをリストするときに表示されません。
スナップショットにロールバックするには、その名前をubuntuがマウントする名前に変更して再起動するだけです。名前を変更する方法は次のとおりです。
Sudo mv /mnt/@ /mnt/@_badroot
Sudo mv /mnt/@_snapshot /mnt/@
スナップショットを削除するには:
Sudo btrfs subvolume delete /mnt/@_badroot
btrfsスナップショットはそれ自体がサブボリュームであり、自己完結型であり、古い@サブボリュームをこのように削除しても問題ありませんが、交換が必要です。
注:btrfs-toolsコマンドset-default
は、Ubuntuのレイアウトを破壊します。
まず最初に、
表示しているサブボリュームの名前は、@home
で示されるbtrfs subvolume list /home
です。 /home
にマウントされています。 @homeはサブボリュームの名前であり、ID 256も持っているため、ほとんどの場合、/ homeのみがbtrfsとしてフォーマットされます。
@homeのスナップショットを作成するには、次を発行する必要があります:Sudo btrfs subvolume snapshot /home/ /home/@home_snapshot_20120421
サブボリュームには任意の名前を付けることができます。 @は、インストール時のUbuntuの規則です。 (apt-btrfs-snapshot
を使用する場合、ルートサブボリュームの名前は@
である必要があります。) コミュニティwiki は、@
をルートとして、@home
を保持することを強くお勧めします。それがそのようにマウントされているので、家として。これは、ロールバックする場合に特に重要です。btrfssubvolume set-defaultを使用しないでください(構文は目的によって強調表示されません)。
btrfs device scan
には、Sudo
を使用する必要があります。
サブボリュームを削除するには、Sudo btrfs subvolume delete @home_snapshot_20120421
を使用できます
すべてのbtrfsコマンドは、明確である限り省略できます。たとえば、Sudo btrfs device scan
はSudo btrfs d s
、Sudo btrfs dev sc
、またはその間の任意の値に切り捨てることができます。
あなたの質問に答えたと思います。定期的なバックアップを取るためのツールがいくつかあります。 btrfs-snapshot-rotation はその一例です。それらはどれも本当に成熟していないか、十分な牽引力を得ていないため、注意して使用してください。
apt-btrfs-snapshot
パッケージをインストールし、そのサブコマンドlist
、snapshot
、delete
およびset-default
を使用します。
これは、下位レベルのbtrfs
コマンドをラップするスクリプトです。最初にbtrfsルートファイルシステムをどこかにマウントすることで機能します。それは、通常/@
としてマウントされる/
サブボリュームとは対照的に、本当のルートを意味します。言い換えると、mount /dev/sda1 /mnt
、/mnt/@
、および作成した他のサブボリュームとしてリストされるサブボリュームを表示できるように、/mnt/@home
を実行する必要があります。そこからbtrfs subvolume snapshot /mnt/@home @snapshot-today
を実行すると、/@home
という名前の/@snapshot-today
のスナップショットが作成されます。これをbtrfs subvolume snapshot /home /home/@snapshot_today
の実行と比較してください。これは、代わりに/@home
の子としてスナップショットを作成します。したがって、ls /home
で実際の名前が/@home/@snapshot-today
の場合に表示されます。
スナップショットのロールバックは、単純な名前変更操作です:mv /mnt/@home @backup ; mv /mnt/@snapshot-today @home
。次回の起動時に、/@home
内の/home
をマウントすると、スナップショットが検出されます。
マウントオプション(具体的にはsubvol =引数)の影響を受けるbtrfsの見方とカーネルの見方の違いに留意する必要があるため、頭を包むのは少し難しいです。