Snapperにスナップショットを認識させる方法は?

Snapperにスナップショットを認識させる方法は?

背景

仮想マシンでBTRFSを使用しています。

フォローするこのガイド/home/.snapshotマイフォルダが独自のサブボリュームであることを確認してください。すべてがうまくいくようです。スナップショットを撮って一覧表示するundochangesなどのことができます。

送受信を試してください

スピード:

  • 送受信を使用してスナップショットID 1を別のサブボリュームに送信する
  • Snapperを使用して、IDが1のスナップショットを削除します。
  • スナップショットID 1に送受信を有効にする
  • SnapperはスナップショットID 1を認識しなくなりました。

詳細:

既存のスナップショットを別のサブボリューム(デバイス)に送信します。

sudo btrfs subvolume list -t /mnt_device3
ID      gen     top level       path
--      ---     ---------       ----
256     9       5               @backup

sudo mkdir /backup/1
sudo btrfs send /home/.snapshots/1/snapshot | sudo btrfs receive /backup/1
sudo btrfs subvolume list -t /backup                                      
ID      gen     top level       path
--      ---     ---------       ----
256     17      5               @backup
258     18      256             1/snapshot

次に、スナッパーを使用してスナップショットを削除します。

sudo snapper -c home delete 1

sudo snapper -c home list
 # | Type   | Pre # | Date                        | User | Cleanup | Description                                      | Userdata
---+--------+-------+-----------------------------+------+---------+--------------------------------------------------+---------
0  | single |       |                             | root |         | current                                          |         
2  | single |       | Tue 04 Jul 2023 03:20:01 PM | root |         | testing send/receive after test.txt |    

次に、再送/受信を使用してスナップショットを再挿入します。

sudo mkdir /home/.snapshots/1
sudo btrfs send /backup/1/snapshot | sudo btrfs receive /home/.snapshots/1
ls /home/.snapshots 
total 0
drwxr-xr-x 1 root root  6 Jul  4 16:30 .
drwxr-xr-x 1 root root 32 Jun 29 11:36 ..
drwxr-xr-x 1 root root 16 Jul  4 16:11 1
drwxr-xr-x 1 root root 32 Jul  4 15:20 2

#an excerpt of sudo btrfs subvolume list /home
ID 311 gen 1147 top level 272 path 2/snapshot
ID 313 gen 1214 top level 272 path 1/snapshot

ただし、Snapperはスナップショット1を認識しません。

sudo snapper -c home list
 # | Type   | Pre # | Date                        | User | Cleanup | Description                                      | Userdata
---+--------+-------+-----------------------------+------+---------+--------------------------------------------------+---------
0  | single |       |                             | root |         | current                                          |         
2  | single |       | Tue 04 Jul 2023 03:20:01 PM | root |         | testing send/receive after test.txt |  

そのため、Snapperを使用してスナップショット1を使用することはできません。

Snapperにインポートしたスナップショットを認識させる方法はありますか?

答え1

AFAIKは、snapper作成されたスナップショットを追跡するためにデータベースを維持します。これにより、# snapper -c home delete 1スナップショット自体とデータベース内の対応するエントリが削除されます。 BTRFSを使用してリカバリスナップショットディレクトリを送受信することは、そのスナップショットの情報をデータベースに保存しません。

同じIDで新しいスナップショットを手動で作成できますが、データベースのタイムスタンプやその他のメタデータが復元されたスナップショットと一致しないため、目的の結果ではない可能性があります。

# manually create snapshot
sudo snapper -c home create --description "Restored snapshot 1"

# replace the snapshot ('3' is an example ID; replace it with the one you actually get)
sudo mv /home/.snapshots/3/snapshot /home/.snapshots/3/snapshot.bak
sudo mv /home/.snapshots/1/snapshot /home/.snapshots/3/snapshot

関連情報