Maison  >  Article  >  Tutoriel système  >  Dites adieu au souci de supprimer accidentellement des fichiers sous Linux, maman n'a plus à s'inquiéter

Dites adieu au souci de supprimer accidentellement des fichiers sous Linux, maman n'a plus à s'inquiéter

WBOY
WBOYavant
2023-12-30 15:55:12538parcourir

Un guide rapide sur l'utilisation de Terminal pour récupérer des fichiers supprimés avec des processus toujours en cours d'exécution sur votre système Linux.

Les fichiers supprimés peuvent être récupérés dans de nombreux cas, par exemple lorsque le fichier est soumis à un processus actif et qu'il est actuellement utilisé par un ou plusieurs utilisateurs. Dans un système Linux, chaque processus en cours d'exécution reçoit un identifiant, appelé identifiant de processus (PID), et stocké dans le répertoire /proc. C'est exactement ce dont nous avons besoin pour récupérer les fichiers supprimés dans un processus toujours en cours (avec PID).

Calculer le hachage MD5 du fichier original

Avant de supprimer, nous calculerons le MD5 du fichier. De cette façon, nous pouvons comparer le hachage MD5 d'origine avec le hachage MD5 du fichier récupéré. Ce processus garantira que l'intégrité du fichier compressé que nous récupérons est la même et qu'il n'a pas été corrompu.

md5sum opengapps.zip >> md5-opengapps.txt

Pour afficher le contenu d'un fichier texte.

cat md5-opengapps.txt

86489b68b40d144f0e00a0ea8407f7c0 opengapps.zip

Après avoir vérifié le hachage MD5 du fichier compressé. Nous gardons le fichier compressé ouvert (Annotation LCTT : ici, nous utilisons file-roller, un programme de décompression d'interface graphique pour garder le fichier compressé ouvert, qui est intégré à l'environnement GNOME ; dans l'environnement de bureau, utilisez les outils de bureau pour ouvrir un package compressé. Il peut également jouer le même rôle. De plus, l'exemple de cet article n'est pas très approprié. Si le fichier de configuration ouvert d'un processus de service est supprimé, alors cette récupération est très significative) et supprimez-le. Après cela, nous lancerons le processus de récupération des fichiers avec les étapes suivantes :

rm opengapps.zip
Processus de récupération de fichiers supprimés

Comme nous l'avons mentionné précédemment, le processus en cours se trouve dans le répertoire /proc. Nous pouvons rechercher le processus requis dans ce répertoire en utilisant la commande suivante :

Comme nous savons déjà que les noms de fichiers incluent l'extension .zip, nous pouvons effectuer une recherche en utilisant l'extension .zip. Cela limitera les résultats de sortie et affichera les processus requis.

ps -axu | grep .zip

m 13119 0.8 1.0 121788 30788 ? Sl 06:17 0:00 file-roller

/home/m/Downloads/Compressed/opengapps.zip

m 13164 0.0 0.0 5108 832 pts/20 S+ 06:18 0:00 grep --color=auto .zip

Ensuite, nous irons dans le répertoire contenant le PID 13119 et ouvrirons le sous-répertoire fd.

cd /proc/13119/fd

Le répertoire fd (descripteur de fichier) contient plusieurs fichiers, dont celui que nous devons récupérer. Ce fichier est lié au fichier d'origine sous forme de lien physique.

Tous les fichiers du répertoire fd sont liés numériquement au « nom de fichier ». Par conséquent, pour déterminer lequel de ces fichiers est lié au fichier d'origine, nous listerons le répertoire /fd avec l'option de liste détaillée.

ls -l

total 0

lr-x------ 1 m m 64 Jul 14 06:17 0 -> /dev/null

lrwx------ 1 m m 64 Jul 14 06:17 1 -> socket:[26161]

lrwx------ 1 m m 64 Jul 14 06:17 10 -> anon_inode:[eventfd]

lr-x------ 1 m m 64 Jul 14 06:17 11 -> anon_inode:inotify

lrwx------ 1 m m 64 Jul 14 06:17 12 -> socket:[5752671]

lr-x------ 1 m m 64 Jul 14 06:17 13 -> /home/m/Downloads/Compressed/opengapps.zip (deleted)

lrwx------ 1 m m 64 Jul 14 06:17 2 -> socket:[26161]

lrwx------ 1 m m 64 Jul 14 06:17 3 -> anon_inode:[eventfd]

lrwx------ 1 m m 64 Jul 14 06:17 4 -> anon_inode:[eventfd]

lrwx------ 1 m m 64 Jul 14 06:17 5 -> socket:[5751361]

lrwx------ 1 m m 64 Jul 14 06:17 6 -> anon_inode:[eventfd]

lrwx------ 1 m m 64 Jul 14 06:17 7 -> anon_inode:[eventfd]

lrwx------ 1 m m 64 Jul 14 06:17 8 -> socket:[5751363]

lrwx------ 1 m m 64 Jul 14 06:17 9 -> socket:[5751365]

Comme vous pouvez le voir dans la sortie du terminal, le fichier d'origine "opengapps.zip" a été supprimé, mais il est toujours lié à un nom de fichier 13 avec le processus PID 13119. Cependant, nous pouvons toujours le récupérer en copiant les fichiers liés dans un endroit sûr.

cp 13 /home/m/Downloads/Compressed

Une fois le fichier copié. Nous allons revenir au répertoire contenant les fichiers récupérés et le renommer à l'aide de la commande suivante.

mv 13 opengapps-recovered.zip
Calculer le hachage MD5 des fichiers récupérés

Depuis que nous avons récupéré le fichier. Vérifions l'intégrité du fichier, juste pour nous assurer qu'il n'est pas corrompu et qu'il est identique à l'original. Plus tôt, nous avons enregistré le hachage MD5 du fichier d'origine.

md5sum opengapps-recovered.zip >> md5-opengapps.txt

Cette commande vérifiera le hachage MD5 du fichier et ajoutera le hachage MD5 du fichier nouvellement récupéré dans le fichier pour comparer facilement les deux hachages MD5.

Le contenu d'un fichier texte peut être affiché pour comparer les hachages MD5 des fichiers originaux et récupérés.

cat md5-opengapps.txt

86489b68b40d144f0e00a0ea8407f7c0 opengapps.zip

86489b68b40d144f0e00a0ea8407f7c0 opengapps-recovered.zip

Le hachage MD5 du fichier récupéré est le même. Ainsi, nous avons réussi à récupérer nos fichiers précédemment supprimés avec une intégrité de fichier cohérente et un bon fonctionnement.

妈妈再也不用担心在 Linux 中误删除文件了

Remarque : dans certains cas, certains fichiers ne peuvent pas être vus avec la commande ps -axu. Essayez donc de vérifier le programme en cours d’exécution et d’en récupérer les fichiers.

Supposons que nous ayons une vidéo avec l'extension .avi en cours de lecture à l'aide du lecteur multimédia Totem. Tout ce que vous avez à faire est de vérifier le PID de Totem et de suivre les mêmes instructions mentionnées dans cet exemple.

Pour trouver le PID d'un programme en cours d'exécution, utilisez la commande suivante, suivie du nom du programme.

pidof 程序名

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer