Fiz um backup de um diretório com alguns diretórios dentro, usando rsync -aPv source/ dest
. Ele não gerou mensagens de erro, nem retornou um status de falha e progrediu até o final. Ele copiou todos os arquivos de source
em dest
, ou assim pensei.
O problema é que apenas os arquivos da raiz do diretório fonte foram copiados corretamente, podendo ser abertos e utilizados. O restante dos arquivos e diretórios foram corrompidos de alguma forma e ocorrem erros:
~/Pictures $ cd Screenshots/
cd: Permission denied: “Screenshots/”
~/Pictures $ ls -l Screenshots/
ls: cannot access 'Screenshots/2016-05-02-23:11:15.png': Permission denied
ls: cannot access 'Screenshots/2015-08-07-17-26-33.png': Permission denied
ls: cannot access 'Screenshots/screenshot_2019-05-27_20-41-55_665836194.png': Permission denied
ls: cannot access 'Screenshots/screenshot_2019-05-05_23-17-16_571047883.png': Permission denied
...
total 0
-????????? ? ? ? ? ? 2015-03-22-03-49-39.png
-????????? ? ? ? ? ? 2015-04-03-20-17-31.png
-????????? ? ? ? ? ? 2015-05-18-22-09-39.png
-????????? ? ? ? ? ? 2015-08-07-17-26-33.png
...
Eu posso acessar esses diretórios usando certos gerenciadores de arquivos (eu tentei PCManFM; ranger não funcionou) e revela que os arquivos estão corrompidos e não podem ser abertos com programas padrão designados (por exemplo, qimgv para imagens, mpv para vídeos).
Não tenho certeza se esse problema corrompeu os arquivos ou apenas os diretórios, de forma que o conteúdo real não esteja acessível, mas talvez ainda esteja lá, ou talvez os metadados estejam corrompidos (são arquivos JPG e PNG principalmente). Como posso recuperar o acesso a esses arquivos e seu conteúdo?
A saída é exatamente igual à que você obtém se tentar listar um diretório cujos
x
bits de permissão estão ausentes.Aqui está um exemplo de como reproduzir a situação:
Então, usar
testdisk
foi provavelmente um exagero; você poderia simplesmente ter corrigido as permissões doScreenshots
diretório com umchmod -R u+X Screenshots
.A causa raiz de permissões errôneas pode ser que o sistema de arquivos de origem original era talvez um sistema de arquivos que não suportava permissões no estilo Unix e, portanto, as permissões relatadas pelo driver do sistema de arquivos (para fins de compatibilidade com POSIX) não correspondiam à realidade do que o driver realmente permitiu
rsync
o acesso. Entãorsync
replicou as permissões falsas para o sistema de arquivos de destino, onde elas foram realmente usadas como configurações de permissão reais, causando o problema.