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 rm
commande supprime temporairement. Comment récupérer le fichier supprimé sur Mac OSX?
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 rm
commande supprime temporairement. Comment récupérer le fichier supprimé sur Mac OSX?
Réponses:
MacOS est un système d'exploitation Unix et rm
signifie «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 rm
supprime 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 unlink
terme car il s'agit de l'appel système sous-jacent associé à la rm
commande 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. ]
unlink
ing 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 unlink
sa création immédiate sont en fait une pratique courante pour créer des fichiers temporaires sécurisés. Des outils comme lsof
peuvent 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 rm
suit 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 rm
exactement 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 -f
commutateur avec des rm
remplacements si nécessaire. Un alias rm
est plus utile lorsque vous glob
supprimez comme rm *.log
. Autrement dit, vous avez la possibilité de sauter un fichier dans la liste.
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"