Fundo
Estou brincando com o BTRFS em uma VM.
Segui este guia para garantir que minha /home/.snapshot
pasta tenha seu próprio subvolume. Tudo parece funcionar, posso tirar instantâneos, listar instantâneos, undochanges
etc.
Experimentando Enviar/Receber
Passos:
- Use enviar/receber para enviar a id de instantâneo 1 para um subvol diferente
- Use o snapper para excluir o id do instantâneo 1
- Use enviar/receber para trazer o id de instantâneo 1
- O Snapper não reconhece mais o id de instantâneo 1
Detalhes:
Enviei um instantâneo existente para um subvolume diferente (dispositivo)
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
Em seguida, usei o snapper para excluir o instantâneo:
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 |
Então eu usei enviar/receber novamente para colocar o instantâneo de volta
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
Mas o snapper não reconhece o snapshot 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 |
Portanto, não posso mais usar o snapper para fazer nada com o instantâneo 1.
Existe uma maneira de fazer com que o snapper reconheça o instantâneo importado?
AFAIK,
snapper
mantém um banco de dados para rastrear os instantâneos que ele cria. Ao fazer isso# snapper -c home delete 1
, você removeu o instantâneo em si e a entrada correspondente no banco de dados. Restaurar o diretório de instantâneo com envio/recebimento BTRFS não coloca as informações sobre esse instantâneo de volta no banco de dados.Você pode tentar criar manualmente um novo instantâneo com o mesmo ID, mas isso pode não ser o que você procura, pois os registros de data e hora e outros metadados no banco de dados não corresponderão ao instantâneo restaurado: