Tenho uma unidade de 4 TB com um sistema de arquivos BTRFS (sem partição) que foi substituído erroneamente pelo instalador do Windows, que determinou que o espaço não estava sendo utilizado e que o usaria para alguma outra finalidade (recuperação?), colocando uma partição FAT de 100 MB sobre ele.
O problema é que todo o conteúdo da unidade está atualmente inacessível. Na maior parte, muitos dos meus arquivos realmente críticos têm backups no meu servidor doméstico, então o dano não é extraordinariamente avassalador, mas sempre há alguns arquivos desonestos que estão faltando no backup e que você só descobre quando olha para fazer o backup. Como resultado, tenho procurado alguma maneira de restaurar o sistema de arquivos ou talvez navegar por qualquer conteúdo que ainda esteja no disco.
Até agora, fiz o seguinte:
Eu executei btrfs rescue super-recover
o que gera o seguinte:
$ sudo btrfs rescue super-recover -v /dev/sda
All Devices:
Device: id = 1, name = /dev/sda
Before Recovering:
[All good supers]:
device name = /dev/sda
superblock bytenr = 65536
device name = /dev/sda
superblock bytenr = 274877906944
[All bad supers]:
device name = /dev/sda
superblock bytenr = 67108864
Make sure this is a btrfs disk otherwise the tool will destroy other fs, Are you sure? [y/N]: y
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
ERROR: cannot read chunk root
Failed to recover bad superblocks
Também tentei executar sudo btrfs rescue chunk-recover
, mas o resultado também foi semelhante: não foi possível encontrar uma raiz de árvore válida.
Em seguida, usando os IDs acima, tentei restaurar o disco para um local de arquivo:
$ sudo btrfs restore -t 78515 -u 1 /dev/sda /tmp/a
No valid Btrfs found on /dev/sda
Could not open root, trying backup super
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
checksum verify failed on 25001984 wanted 0x00000000 found 0xb6bde3e4
bad tree block 25001984, bytenr mismatch, want=25001984, have=0
ERROR: cannot read chunk root
Could not open root, trying backup super
Problema semelhante: não há mais uma raiz válida devido aos 100 MB de FAT!
Por fim, conheço a opção de navegar pelos arquivos testdisk
, mas parece que não consigo navegar por todos os arquivos restantes de um sistema de arquivos BTRFS: a única opção é clonar uma imagem do disco.
Alguém tem alguma solução potencial para navegar por arquivos individuais em um sistema de arquivos BTRFS inválido ou talvez recriar parcialmente a raiz? Eu não preciso restaurar o sistema de arquivos inteiro, na verdade, o ideal seria conseguir obter quantos arquivos de um subvolume (por exemplo @pictures
) ainda forem "válidos" o suficiente para ser um arquivo real. Existe uma maneira de recriar a árvore raiz do sistema de arquivos BTRFS para tentar recuperar o máximo de arquivos no disco?
Quando faço isso, consigo ver uma tabela de nomes de arquivos, sudo strings /dev/sda | less
o que parece indicar que posso encontrar alguns dados associados a esses arquivos mais abaixo no disco, mas não tenho a mínima ideia de como verificar isso.
Não sei nada sobre como o btrfs armazena dados especificamente no disco, no entanto, sei que outros sistemas de arquivos como o ext[2-4] tendem a colocar os metadados (como inodes) na frente do disco e, se o btrfs for o mesmo, então substituir os primeiros 100 MB pode ter apagado a maioria ou todos esses metadados.
Dito isso, se ele tivesse criado apenas um sistema de arquivos de 100 MB e não o tivesse preenchido, ele poderia ter sobrescrito apenas parte desses 100 MB, então a maioria dos metadados poderia ter sobrevivido. Talvez.
Alguém mais familiarizado com o btrfs poderia ajudar melhor no caminho que você está seguindo.
Entretanto, há outro caminho possível, que não envolve conhecimento detalhado da estrutura do sistema de arquivos: procurar assinaturas conhecidas de dados.
Há uma ferramenta chamada "photorec" que escaneia uma imagem de disco e procura por formatos de arquivo conhecidos e o que encontrar será copiado. Ela foi escrita originalmente para recuperar jpegs de cartões SD, mas desde então foi estendida para cobrir muitos formatos de arquivo conhecidos.
Então, se o que você está fazendo não der resultado, você pode tentar o Photorec.