Fichiers supprimés récupérés sur Mac par ligne de commande

24

J'ai accidentellement supprimé un fichier en exécutant:

rm -rf ./Desktop/myScript.sh

Je pense qu'il est possible de récupérer le fichier, car la rmcommande supprime temporairement. Comment récupérer le fichier supprimé sur Mac OSX?

cat_minhv0
la source
1
Vous voudrez rechercher des outils de suppression HFS +, en supposant que vous utilisez HFS +. Le site Apple SE en sait probablement plus.
derobert
1
Anecdotique, mais mon beau-père a accidentellement supprimé un grand répertoire de photos sur Mac OS X et a réussi à récupérer la plupart d'entre elles à l'aide d'un outil qu'il a téléchargé (je pense que cela coûte de l'argent, mais a eu un essai pour un ou deux fichiers , afin que vous puissiez tester si cela va fonctionner, et dans votre cas, ce serait suffisant). discussions.apple.com/thread/…
ire_and_curses

Réponses:

28

MacOS est un système d'exploitation Unix et rmsignifie «au revoir». L'interface graphique vous permet de déplacer un fichier vers la corbeille (que vous pouvez ensuite récupérer) mais ce n'est pas ce que vous avez fait. Si vous avez une sauvegarde (par exemple, vous avez Time Machine en cours d'exécution), vous êtes enregistré.

Clarification

Strictement parlant (comme le souligne @ire_and_curses), a rmsupprime simplement l'entrée de répertoire du fichier tout en laissant intacts les blocs de disque qu'il a utilisés. Si vous pouviez suspendre le système de fichiers dans lequel se trouvait le fichier, il existe des méthodes avancées par lesquelles vous pouvez essayer de redécouvrir le contenu de ces blocs. Il existe également des outils de récupération qui peuvent être achetés pour récupérer la perte. Le problème central est que rien d'autre ne réutilise les blocs de disque représentés par votre fichier.

Le MacOS dispose également d'une commande de suppression sécurisée ( srm) qui écrase un fichier avant qu'il ne soit unlinkédité, le rendant irrécupérable. J'utilise le unlinkterme car il s'agit de l'appel système sous-jacent associé à la rmcommande d' un shell . Cela prépare le terrain pour la prochaine partie de cette discussion, ci-dessous.

Sidenote

[Je devrais m'empresser d'ajouter que même si vous écrasez un disque plusieurs fois, il existe des moyens de lire ce qui a été écrit une douzaine de fois auparavant. Pour désinfecter correctement un disque à éliminer, il faut vraiment un bain d'acide, un gros marteau et un broyeur. ]

unlinking un fichier diminue le nombre de liens inode du fichier. Si cette valeur atteint zéro, le fichier est supprimé du répertoire du système de fichiers et ses blocs de disque libérés pour une réutilisation. Cela se produit uniquement lorsque aucun processus n'a ouvert le fichier. Il est souvent déroutant pour les administrateurs de constater qu'un système de fichiers utilise de très grandes quantités d'espace qui ne peuvent pas être prises en compte par la simple sommation de blocs de disque (avec quelque chose comme du). Le plus souvent, la raison en est qu'un fichier ouvert a été supprimé, de sorte qu'il n'est plus représenté dans son répertoire. La raison en est que les blocs de disques restent inutilisés jusqu'à la fin du dernier processus utilisant le fichier.

L'ouverture d'un fichier et unlinksa création immédiate sont en fait une pratique courante pour créer des fichiers temporaires sécurisés. Des outils comme lsofpeuvent exposer ces fichiers autrement invisibles si vous recherchez des fichiers avec un nombre de liens (NLINK) de zéro.

Sous Unix et Linux (dont MacOS est un Unix de marque), an rmsuit la philosophie Unix du "do-it" sans fanfare si possible. Autrement dit, si vous avez les autorisations pour supprimer un fichier (c'est-à-dire que votre répertoire autorise l'écriture) fait alors rmexactement ce que vous demandez. Vous voudrez peut-être créer un alias de shell rm='rm -i'qui vous demandera de confirmer avant d'effectuer l'opération. Utiliser le -fcommutateur avec des rmremplacements si nécessaire. Un alias rmest plus utile lorsque vous globsupprimez comme rm *.log. Autrement dit, vous avez la possibilité de sauter un fichier dans la liste.

JRFerguson
la source
Bravo pour la section "clarification".
Tim
La fonction Mac OS «Secure Erase Trash» utilise un modèle recherché pour réellement effacer les puits quantiques sur les disques rotatifs modernes. Sur le stockage à semi-conducteurs, il utilise la fonctionnalité "Trim" pour placer les blocs de stockage associés au fichier en tête de la file d'attente "à effacer" dans le contrôleur de stockage. Utilisez-les si vous voulez vraiment le contenu de votre disque, mais notez qu'ils prennent beaucoup de temps pour nettoyer un disque en rotation.
Wexxor
4

En fonction de votre contenu, mais vous pouvez utiliser différents logiciels tiers pour ce faire, par exemple:

et beaucoup plus.

Vous pouvez trouver plus d'applications en tapant «récupération de données» dans l'App Store.


Un moyen plus avancé consiste à démarrer votre OSX en mode de récupération (ou à démonter votre partition si vous le pouvez) et à la rechercher manuellement (si vous vous souvenez d'un texte spécifique de votre script).

Un exemple:

diskutil list
sudo cat /dev/disk0s2 | strings | grep -C20 "my_stuff"
kenorb
la source
1
Utilisé Wondershare et récupéré du code I "git clean -f" 'd
fionbio
2
À partir de 2019, l'astuce de numérisation de périphérique de bloc est impossible ou plus difficile à faire sur OSX maintenant en raison du cryptage APFS. J'ai des données avec succès de cette façon sur Linux cependant: P
primehunter326