背景
仮想マシンで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