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

그런 다음 snapper를 사용하여 스냅샷을 삭제합니다.

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

관련 정보