Não é possível remover o arquivo: “A estrutura precisa de limpeza”

Não é possível remover o arquivo: “A estrutura precisa de limpeza”

Eu tenho um disco rígido externo criptografado via LUKS. Ele contém um ext4 fs.

Acabei de receber um erro do rsync para um arquivo localizado nesta unidade:

rsync: readlink_stat("/home/some/dir/items.json") failed: Structure needs cleaning (117)

Se eu tentar excluir o arquivo, recebo o mesmo erro:

rm /home/some/dir/items.json
rm: cannot remove ‘//home/some/dir/items.json’: Structure needs cleaning

Alguém sabe o que posso fazer para remover o arquivo e corrigir problemas relacionados ao drive/fs (se houver)?

Responder1

Isso é fortemente indicativo de corrupção do sistema de arquivos. Você deve desmontar, fazer um backup em nível de setor do seu disco e, em seguida, executar o e2fsck para ver o que está acontecendo. Se houver uma grande corrupção, mais tarde você ficará satisfeito por ter feito um backup em nível de setor antes de permitir que o e2fsck adulterasse os dados.

Responder2

Se ajudar alguém, tive um problema semelhante (backups rsync/rsnapshot, em um arquivo afetado). Postei meu problema/solução aqui:

https://ubuntuforums.org/showthread.php?t=2348768&p=13627299#post13627299

RESUMO:

erro de backup rsnapshot (rsync) no sistema arch linux x86_64; um arquivo corrompido e profundamente aninhado estava gerando esse erro, também mostrado quando tentei excluir esse arquivo:

sudo rm -fR hourly.5/

rm: cannot remove 'hourly.5/snapshot_root/mnt/Vancouver/temp/temp - old/temp - 09 (Dec 07, 2014 - Sep 02, 2015)/a_OLD-gmail/[email protected]/[Gmail]/LINUX/rsync, rsnapshot; Other backups/19.bak': Structure needs cleaning

Aqui está o problema:

cd mnt/Vancouver/temp/temp\ -\ old/temp\ -\ 09\ \(Dec\ 07\,\ 2014\ -\ Sep\ 02\,\ 2015\)/a_OLD-gmail/[email protected]/\[Gmail\]/LINUX/rsync\,\ rsnapshot\;\ Other\ backups/

ls -l

ls: cannot access '19.bak': Structure needs cleaning
total 0
-????????? ? ? ? ?  ? 19.bak        ## << THAT IS THE PROBLEM!!

[Veja também: https://www.reddit.com/r/linuxquestions/comments/4b47r2/has_anyone_ever_gotten_structure_needs_cleaning/ ]

Minha unidade de backup é /dev/sda1.

sudo umount /dev/sda1

sudo fsck.ext4 /dev/sda1  ## << accepted suggested fixes
  • Editar (2023-02): uma nota de precaução: você não pode executar fsckem NAS - unidades de disco rígido associadas à rede (RAID) - comumente vendidas online (Amazon; ...) e que se parecem com HDD normais; reparos em unidades NAS requerem software especial. Se você aplicar fscka um HDD NAS, provavelmente irá corrompê-lo.

Reinicializado: tudo parece bem. Entrei na unidade de backups e excluí o arquivo problemático:

/mnt/Backups/rsnapshot_backups/hourly.5/snapshot_root/mnt/Vancouver/temp/temp - old/temp - 09 (Dec 07, 2014 - Sep 02, 2015)/a_OLD-gmail/[email protected]/[Gmail]/LINUX/rsync, rsnapshot; Other backups/19.bak

QED?!

[Atualização: sim; funcionou: meus backups estão funcionando normalmente, de novo! :-) ]

Responder3

Às vezes, os sistemas de arquivos não estão em ordem e precisam de limpeza. Isto pode ser feito porfsckcomando. Mas lembre-se, você deve executar o fsck apenas em partições desmontadas para evitar o risco de corrupção de arquivos.

Se o seu sistema de arquivos for ext4, tente executar este comando:

fsck -AR -t ext4 -y

Responder4

Recebi a mesma mensagem de erro do rsync e a mesma mensagem de erro do rm quando tentei excluir o arquivo. Como o sistema de arquivos era o sistema de arquivos raiz, não havia como usar o fsck. Mas quando reiniciei o sistema, o arquivo desapareceu e o backup foi bem-sucedido. Não tenho ideia de por que isso funcionou, mas pelo menos é uma solução fácil e vale a pena tentar reiniciar primeiro.

informação relacionada