GNU/Linux >> Tutoriels Linux >  >> Linux

Comment ça marche ? Que fait rm ?

Ma compréhension est que les "fichiers" ne sont en fait que des pointeurs vers l'emplacement de la mémoire correspondant au contenu des fichiers.

Soyez prudent avec votre terminologie. Les fichiers (et les pointeurs) sont sur disque, pas en mémoire (RAM).

Si vous "rm" un fichier, vous devez certainement supprimer ce pointeur.

Oui. Ce qui se passe dépend fortement du système de fichiers. Certains ont un bitmap dont les blocs sont libres/occupés. Il faudrait donc retourner le bit pour chaque bloc libéré. D'autres systèmes de fichiers utilisent des méthodes plus sophistiquées de suivi de l'espace libre.

ce qui suggère que rien n'est réellement écrasé...

Corriger. Vous pouvez trouver divers utilitaires "undelete". Mais selon le système de fichiers, cela peut devenir assez complexe. Mais les choses que vous avez sauvegardées il y a des années pourraient toujours être là ou elles pourraient être écrasées. Tout dépend de détails minutieux. Par exemple, voir e2fsprogs.

Alors, supprimer le pointeur vers une adresse mémoire est-il la seule chose que fait rm ?

Eh bien, il doit également supprimer "l'entrée de répertoire" qui donne des métadonnées sur le fichier. (Parfois, cela efface simplement le premier octet du nom de fichier).

Les données sont-elles toujours là, dans un bloc contigu, comme avant ?

Oui, les données sont toujours là. Mais ne présumez pas qu'il s'agit d'un bloc contigu. Les fichiers peuvent être fragmentés sur tout le disque, avec de nombreux pointeurs qui lui indiquent comment réassembler. Et si vous utilisez RAID, les choses deviennent vraiment complexes.


Oui. rm supprime simplement le pointeur. Si vous avez plusieurs pointeurs vers le fichier (liens durs), supprimez l'un de ces pointeurs avec rm laisse les autres complètement intactes et les données toujours disponibles.

La suppression de tous ces liens ne touche toujours pas les données, mais le système d'exploitation est désormais libre de réutiliser les blocs qui étaient auparavant réservés au stockage de ces données.

Il convient de noter que tout processus qui ouvre un fichier crée un descripteur de fichier pour celui-ci. Cela s'ajoute au nombre total de références au fichier. Si vous supprimez tous les pointeurs de votre système de fichiers, mais que le système d'exploitation a toujours un processus en cours d'exécution avec un descripteur de fichier ouvert pour votre fichier, le nombre de pointeurs ne sera pas nul et le fichier ne sera pas vraiment supprimé. Ce n'est que lorsque ce pointeur final est fermé que le système de fichiers enregistrera l'espace disque comme ayant été libéré, et ce n'est qu'à ce moment-là que le système d'exploitation sera libre d'écraser les blocs précédemment réservés pour stocker ces données.

Vous pouvez ou non être en mesure de récupérer ces données à tout moment dans le futur en fonction de la réutilisation ou non des blocs en question.

Incidemment, vous n'avez aucune garantie que vos données se trouvent là dans un bloc contigu en premier lieu.


Linux
  1. Qu'est-ce que NGINX ? Comment ça marche?

  2. Qu'est-ce qu'un serveur Web et comment fonctionne un serveur Web ?

  3. Comment fonctionne Awk '!a[$0]++' ?

  4. Comment fonctionne le Sticky Bit ?

  5. Déplacer un fichier en cours d'utilisation -- Comment ça marche ?

Commande de fichier Linux :que fait-elle et comment l'utiliser

Qu'est-ce que Docker ? Comment ça marche?

Qu'est-ce que la commande source sous Linux et comment ça marche ?

Comment fonctionne la mémoire d'échange sous Linux ?

Comment fonctionne un équilibreur de charge ? Qu'est-ce que l'équilibrage de charge ?

Comment fonctionne /proc/* ?