Question Existe-t-il des fichiers indélébiles sous Linux?


Je n'ai jamais vu ça avant (20 ans de * nix). J'ai essayé de sauver mon disque dur (détails sur demande) et j'ai eu beaucoup de succès sauf que certains fichiers ressemblent à ceci:

$ ls -al
$ ?????????? ?    ?       ?      ? blah.txt

Ce fichier n'est pas affecté par rm, rm -f, shred, mv, chown, chmod ou toute autre commande à laquelle je peux penser.

Exemple

# whoami
root

# rm -f blah.txt
rm: cannot remove `blah.txt': permission denied

# ls -la blah.txt
?????????? ?    ?       ?      ? blah.txt

En gros, il en va de même pour toutes les commandes de ce fichier.

Des idées?


4
2017-12-13 07:46


origine


20 ans d'Unix et vous n'avez jamais vu de système de fichiers corrompu et / ou HD cassé? Quel chanceux êtes-vous. - Janne Pikkarainen
Ah, c'est ce que je pensais que ça pourrait être. Oui, je suppose que j'ai été chanceux comme ça. Le HD n'est pas cassé, d'ailleurs. Fonctionne bien - bev
Cela signifie généralement que le nom du fichier est répertorié dans le répertoire, mais qu'il n'a pas pu accéder à son inode. Il se peut qu'un numéro d'inode incorrect se trouve dans le répertoire ou que l'inode du disque ait été corrompu. - mark4o


Réponses:


Pouvez-vous nous montrer la sortie de 'lsattr blah.txt'? Cela nous indiquerait quels drapeaux spéciaux ce fichier a définis.

Pouvez-vous également vérifier dans dmesg (le journal des messages de débogage du noyau) tout ce qui est nouveau (exécutez dmesg deux fois, une fois avant de supprimer un fichier, et voyez si quelque chose de nouveau est apparu au bas du journal).

Un exemple de message de corruption de système de fichiers peut ressembler à ceci:

[86777.332361] EXT4-fs (dm-0): error count: 436
[86777.332365] EXT4-fs (dm-0): initial error at 1290174395: ext4_mb_generate_buddy:726
[86777.332367] EXT4-fs (dm-0): last error at 1292151653: ext4_mb_generate_buddy:726
[86777.332419] EXT4-fs (dm-8): error count: 1406
[86777.332423] EXT4-fs (dm-8): initial error at 1290623933: ext4_mb_generate_buddy:726
[86777.332425] EXT4-fs (dm-8): last error at 1292168399: ext4_mb_generate_buddy:726

et cela indique que ~ 86 777 secondes depuis le démarrage (cette partie peut ne pas apparaître sur votre système, cela dépend d'un paramètre du noyau), il y avait deux erreurs concernant le système de fichiers EXT4 sur ma machine de test.


1
2017-12-13 10:42



@qdot, merci pour le conseil. Je ne peux pas l'essayer encore parce que quelque chose que j'ai essayé de supprimer le problème. J'ai «touché» le fichier (j'avais renoncé à récupérer les données) et maintenant le fichier ressemble à un fichier normal sans contenu. Alors que je me promène à travers mes fichiers, je suis sûr que j'en verrai plus (2 jusqu'à présent), à quel point je vais essayer lsattr et poster le résultat. - bev
@qdot - ok voici la sortie: lsattr: opération non supportée lors de la lecture des drapeaux sur blah.txt. MAIS, lsattr ne renvoie aucune information pour aucun fichier sur mon système. Il dit: lsattr: ioctl inapproprié pour le périphérique lors de la lecture des indicateurs sur <tous les fichiers>. Donc, soit lsattr ne fonctionne pas sur reiserfs ou, mon disque dur est corrompu mais semble fonctionner correctement. Hmmmmm. En regardant dmesg maintenant. - bev
ReiserFS: avertissement: is_tree_node: le niveau de noeud 0 ne correspond pas à celui attendu 1 ReiserFS: sda3: avertissement: vs-5150: search_by_key: format invalide trouvé dans le bloc 869576. Fsck? ReiserFS: sda3: avertissement: vs-13070: reiserfs_read_locked_inode: échec E / S en essayant de trouver des données stat de [265071 265097 0x0 SD] ReiserFS: avertissement: is_tree_node: le niveau 0 ne correspond pas à celui attendu 1 ReiserFS: sda3: avertissement: vs-5150: search_by_key: format invalide trouvé dans le bloc 869576. Fsck? - bev
Yah On dirait qu'il y a un problème avec la structure d'inode. Je vais relancer fsck. - bev
Rsc fsck --check qui me dit maintenant qu'il y a beaucoup de corruption et que je dois lancer fsck --rebuild-tree. Donc, après avoir sauvegardé ma partition il y a quelques jours, j'ai couru ça. Je vous recontacterai sur le résultat. - bev


Votre système de fichiers est corrompu. Un fsck aiderait probablement.

edit: sauf si vous utilisez ReiserFS, auquel cas fsck pourrait le corrompre davantage ...


7
2017-12-13 08:34



C'était la première chose que j'ai faite. Il n'a retourné aucun mauvais bloc. - bev
Ce ne peut être rien d'autre. Reconsidérer cette possibilité. Cependant, je viens de remarquer que vous utilisez ReiserFS. Sachez que ReiserFS fsck pourrait simplement détruire votre système de fichiers. C'est l'un des défauts de conception de ReiserFS ... - jlliagre
L'une des failles de conception de reiserfs est que l'exécution de reiserfsck pourrait détruire un système de fichiers? C'est bon à savoir (après, bien sûr, j'ai lancé reiserfsck sur mon système de fichiers), je vais essayer de trouver de la documentation à ce sujet. J'ai eu la chance de tout sauvegarder il y a 2 jours. Oh - et vous aviez raison J'ai relancé fsck et cela m'a montré beaucoup de problèmes. - bev
De en.wikipedia.org/wiki/ReiserFSLe processus de reconstruction de l'arborescence de fsck de ReiserFS a suscité de nombreuses critiques: si le système de fichiers est tellement corrompu que son arborescence interne est inutilisable, effectuer une opération de reconstruction de l'arborescence peut corrompre davantage les fichiers existants ou introduire de nouvelles entrées avec des contenus inattendus. - jlliagre
@jlligre - merci pour le lien. Jolie peur Je réfléchis à mon prochain geste. J'ai la partition entière sauvegardée. J'ai des raisons de croire que le disque dur physique est correct, la situation actuelle est due au fait que je joue avec deux disques durs externes après avoir effectué la sauvegarde (bien que je ne voie pas ce que cela a causé). Voulez-vous suggérer que je déchire la partition et le format avec ext3? merci pour le conseil. - bev


chattr +i file rend un fichier complètement protégé en écriture, même par root. C'est ce qu'on appelle immuable. Pour supprimer ou modifier, vous devez d'abord le rendre mutable par chattr -i file.


4
2017-12-13 07:50



merci pour l'aide, malheureusement, cela n'a pas fonctionné. Voici ce qui s'est passé: $> chattr -i blah.txt $> chattr: permission refusée en essayant de stat blah.txt - bev