59 votes

Lorsqu'un PC modifie un fichier, supprime-t-il le fichier original ?

Si code.txt (ou n'importe quel fichier) est édité et sauvegardé, j'ai deux idées sur la façon dont un PC pourrait gérer le processus :

  1. Le PC supprime code.txt complètement et crée un nouveau code.txt (version éditée) à partir de zéro.

  2. Le PC édite une partie de l'hexagone de code.txt . Donc aucune suppression ne se produit.

Quelle idée représente le fonctionnement des ordinateurs ?

122voto

James Mertz Points 390

Cela peut être l'un ou l'autre - cela dépend de l'éditeur de texte utilisé.

Le concept de "fichier texte" n'est pas intégré aux ordinateurs : chaque système d'exploitation peut gérer les fichiers différemment, et chaque éditeur de texte peut utiliser ces fichiers différemment.

En pratique, vous trouverez des éditeurs de texte qui disposent des deux mécanismes. Pratiquement tous les systèmes d'exploitation permettre l'écrasement direct du contenu d'un fichier existant, de sorte que les éditeurs simples tels que Notepad demandent généralement au système d'exploitation d'écrire directement dans le fichier d'origine, car c'est la méthode la plus simple à mettre en œuvre - mais risquée si vous perdez le courant au milieu de l'écriture. Ainsi, pour des raisons de fiabilité, de nombreux éditeurs délibérément enregistrer les données mises à jour dans un nouveau fichier et supprimer l'original.

(Je pense que les mises à jour en place sont plus courantes parmi les éditeurs hexagonaux, où la plupart des modifications n'insèrent/suppriment pas d'octets mais changent seulement les emplacements existants, de sorte qu'un fichier de réécriture complet n'est pas nécessaire).

Il existe même un troisième mode de fonctionnement : l'éditeur peut d'abord faire une copie de sauvegarde de l'ancien fichier, puis écrire directement de nouvelles données dans le fichier.


Il également dépend du système de fichiers qui conserve le fichier. Avec la plupart des systèmes de fichiers traditionnels, si un programme demande d'écrire dans un fichier existant, le système de fichiers écrasera simplement les anciennes données sur place.

Cependant, certains systèmes de fichiers faire fonctionnent en mode "copie sur écriture", où toute nouvelle donnée est toujours écrite à un emplacement différent, que le programme le veuille ou non. Là encore, cette méthode présente l'avantage d'une fiabilité accrue, car une modification interrompue peut être entièrement annulée.

Dans certains systèmes de fichiers (tels que Btrfs ou ext4), il s'agit d'une fonctionnalité facultative ; dans d'autres (par exemple, les systèmes de fichiers structurés en logs), elle fait partie de la conception de base.

6voto

David K Points 21

Puisque vous parlez de "sauvegarder le fichier", le fichier ne sera pas édité sur place sur le disque.

Avec un fichier dans un système de fichiers habituel, il y a deux choses à considérer. Il y a l'entrée du répertoire, et il y a les données réelles du fichier quelque part sur le disque.

Lorsque vous éditez un fichier dans un éditeur normal, il charge les données du fichier dans la RAM, et toute édition se fait sur cette copie des données. Ensuite, lorsque vous enregistrez le fichier, il y a essentiellement deux options :

Option 1 : le fichier original est renommé Ainsi, l'entrée de répertoire originale et les données originales resteront sur le disque. Le renommage peut par exemple changer le suffixe du fichier en .bak (en supprimant toute .bak en général). Ensuite, un nouveau fichier est créé et les données de la mémoire y sont écrites.

Option 2 : l'entrée du répertoire d'origine est modifiée pour que le fichier soit tronqué à la longueur 0. La zone du disque utilisée pour les données du fichier sera marquée comme inutilisée, mais l'ancien contenu du fichier restera sur le disque jusqu'à ce qu'il soit écrasé. Les nouvelles données sont alors écrites. Dans ce cas, l'entrée du répertoire est conservée, seules les données vers lesquelles elle pointe sont modifiées.

Il existe quelques variantes possibles, la plus courante étant que les données modifiées sont d'abord stockées dans un fichier temporaire, de sorte que si votre ordinateur tombe en panne à ce stade, le fichier original ne sera probablement pas endommagé. Ensuite, le fichier original est supprimé et le nouveau fichier est renommé avec le nom correct. Il est également possible de supprimer le fichier original avant d'écrire le nouveau fichier.

Votre théorie 1 est donc proche de ce que font la plupart des rédacteurs.


Il y a ensuite des cas particuliers. Le plus évident est un éditeur de disque, qui permet de lire et d'écraser des octets directement sur le disque. Un autre cas peut être celui d'un fichier de base de données, où les enregistrements peuvent être de taille fixe, de sorte qu'il est facile d'écraser un enregistrement. Mais les données ne peuvent pas être ajoutées au milieu d'un fichier, et par conséquent, l'édition de fichiers texte ou de tout autre fichier où la longueur des données au milieu du fichier change fréquemment, ces astuces ne peuvent pas vraiment être utilisées.

Votre théorie 2 est donc possible dans certains cas, mais les éditeurs de texte normaux et autres ne le font pas.

4voto

phyrfox Points 2893

Historiquement, les lecteurs étaient directement contrôlés par le système d'exploitation, qui était à son tour contrôlé par l'application. Dans ce contexte, la théorie 2 était le principal mode de fonctionnement des PC. Le SE spécifiait un physique où placer les données, et il avait un contrôle total sur ce processus. Par conséquent, les premiers systèmes de fichiers disposaient d'une table des "secteurs défectueux", de sorte qu'après la perte de vos données, l'ordinateur pouvait vous dire que les données étaient perdues et marquer le secteur comme inutilisable pour éviter d'autres pertes de données. Les analyses de disque et la défragmentation étaient à l'ordre du jour.

Cependant, après le tournant du siècle, nous sommes passés au LBA, de sorte que le système d'exploitation doit simplement faire référence au bloc "logique" qu'il souhaite lire ou écrire. Le disque dur lui-même avait désormais l'intelligence de déplacer les données dans le dos du système d'exploitation sans que celui-ci s'en aperçoive. Cela signifiait une meilleure fiabilité, puisque les secteurs dont la vérification échouait pouvaient simplement être déplacés vers un nouvel emplacement physique sans que le système d'exploitation ne sache où se trouvaient ces données.

Dans le matériel moderne, les lecteurs de disques "à plateau" se contentent généralement d'écraser ce qui était là avant avec les nouvelles données entrantes, et remappent éventuellement la LBA si le secteur semble ne pas pouvoir conserver les données (le secteur est endommagé ou usé). Les lecteurs "flash" effacent généralement les anciennes cellules, puis écrivent les données dans les nouvelles cellules, un processus connu sous le nom de "wear-leveling".

Dans les deux cas, cela est possible car il y a toujours une capacité inutilisée au-delà de la valeur déclarée. Ce surapprovisionnement permet au disque d'avoir une durée de vie utile plus longue que celle de la technologie du siècle précédent, plutôt peu fiable. Le mode LBA permet de dissocier le support physique du système d'exploitation afin que le disque lui-même puisse prendre les mesures qu'il juge nécessaires pour éviter la perte de données.

Au niveau de l'application, vous ouvrez généralement un fichier en mode "WRITE", ce qui indique au système d'exploitation de vider le fichier ("supprimer" le contenu, mais pas le fichier lui-même), puis d'écrire de nouvelles données. Toutes ces données sont mises en mémoire tampon au niveau du système d'exploitation, puis envoyées au lecteur, qui effectue les modifications demandées.

Compte tenu de ces informations, la théorie 1 est ce qui se passe techniquement au niveau de la programmation de l'application, du moins par défaut, car il existe également un mode "write with append" pour éviter d'effacer le contenu du fichier. Le système d'exploitation lui-même présentera les changements à effectuer plus comme la théorie 2, mais de manière abstraite via LBA. Le disque lui-même fera alors probablement quelque chose qui est un mélange de la théorie 1 et de la théorie 2.

Ouaip. C'est compliqué et très dépendant du fabricant, du développeur de système d'exploitation et du développeur d'applications. Cependant, toute cette complexité a pour but de rendre le stockage des données plus fiable tout en améliorant l'utilisation de l'énergie et la durée de vie des batteries.

3voto

milet Points 31

Ça dépend. AFAIK Microsoft Word, lors de l'enregistrement .doc (pas .docx ) avec des fichiers Sauvegarde rapide options activées, ajoute les modifications apportées au document depuis la dernière sauvegarde au fichier existant.

2voto

X X Points 147

Bien qu'il existe d'autres réponses, je vais essayer de donner une réponse complète afin que vous puissiez comprendre à tous les niveaux, du problème aux solutions, et comment elles fonctionnent.

Réponse courte

Cela dépend fortement de votre éditeur, des logiciels/pilotes sous-jacents, du stockage.

Ce qu'il faut faire : Si vous souhaitez supprimer définitivement un fichier, la recherche de l'option "supprimer le fichier en toute sécurité" résout le problème pour la plupart des utilisateurs. Si votre cas n'est pas celui de la "plupart des utilisateurs", il n'y a pas de réponse courte ;)


Réponse courte de Paranoiac

Est récupérable, sauf si vous le supprimez définitivement avec une combinaison d'outils spécifiques sur des paramètres élevés.


Réponse longue

Il manque des informations dans votre question (logiciel, matériel, etc.), donc au lieu de répondre moi-même, je vais vous aider à répondre vous-même à votre question.

Ce n'est pas aussi simple et direct. Le fichier peut passer par plusieurs couches et il peut rester n'importe où pendant un certain temps ou pendant longtemps.

Editor <-> Memory <-> Backup/VCS/diff disk/etc if exists <-> OS <-> File System <-> Storage cache <-> Storage

Selon la configuration de votre environnement, certaines couches ci-dessus peuvent être ajoutées ou supprimées. Ainsi, pour donner une réponse complète, je vais donner des informations sur chacune d'entre elles, vous pouvez prendre les points qui sont pertinents pour votre cas.

  1. Rédacteur en chef :
  • L'éditeur peut enregistrer temporairement l'ancienne (ou la nouvelle) version du fichier à un autre endroit. Ensuite, après avoir supprimé le fichier, son ancienne (ou nouvelle) version peut rester quelque part. Par exemple, MS Word crée de tels fichiers temporaires, afin de pouvoir récupérer le fichier après un crash.
  • Si le logiciel d'édition remplace les bits du même fichier lors de son édition, alors le fichier peut sont réécrits lors de l'édition. Donc, vous mai utilisent un tel éditeur pour remplir le fichier de bits aléatoires et le rendre plus difficile à récupérer.
    Mais cela peut aussi dépendre des paramètres de l'éditeur et des types de fichiers.
    Notez que le mot mai était en italique. Même si l'éditeur réécrit le fichier, celui-ci peut rester intact/récupéré (lire les points suivants).
  1. Logiciels/pilotes/systèmes de fichiers sous-jacents :
  • Les systèmes de fichiers peuvent marque l'espace du fichier supprimé comme "libre" sans le nettoyer réellement. Ils le font pour économiser les performances, car le nettoyage complet du fichier nécessite plus d'opérations (par le disque, le CPU). Ainsi, après avoir été supprimé, le fichier peut encore être récupérable.
    Il en va de même pour le "formatage du disque", notamment pour les options de "formatage rapide". Vous avez peut-être vu différents outils de récupération de fichiers qui fonctionnent après la suppression du fichier ou même le formatage du disque - la plupart d'entre eux peuvent fonctionner pour cette raison.
  • Le fichier restera intact si d'autres logiciels/pilotes se trouvent en dessous de ce fichier. protéger le fichier initial ne sera pas écrasé. Ces types de logiciels comprennent les systèmes de contrôle de version, les disques différentiels virtuels et certains logiciels de sauvegarde. Un exemple est Git qui conservera les blocs du fichier original et créera un nouveau fichier contenant les blocs modifiés.
  1. Stockage :
  • Le stockage lui-même peut écrire des blocs modifiés sur un nouveau et marquer les anciens blocs comme "libres". Ensuite, le fichier restera physiquement sur le stockage (et sera récupérable), à moins qu'il ne soit écrasé par un autre fichier. L'exemple est moderne Stockage SSD qui peut le faire au niveau du matériel.

  • Il existe des moyens de récupérer des données à partir des disques magnétiques d'un disque dur mécanique typique, même si les données ont été endommagées. écrasé . Et il existe des entreprises spécialisées dans ce domaine.

  1. Mémoire : Oui, il peut aussi rester en mémoire - RAM, RAM vidéo, cache, etc. Cela dépend de l'éditeur/visualisateur que vous utilisez. La plupart des logiciels ne nettoient pas la mémoire en toute sécurité après leur utilisation. Et pendant un certain temps, le fichier peut rester récupérable en mémoire avant que la mémoire ne soit réutilisée par d'autres applications. Par exemple, un fichier texte typique peut rester en mémoire vive après avoir été modifié et supprimé. Et une image (ou l'écran entier) peut être récupéré de la RAM vidéo après qu'il ait été fermé et supprimé. Non seulement les images, mais par exemple un écran de votre navigateur peut rester dans la mémoire vidéo même après une heure.

Ainsi, si vous souhaitez obtenir une réponse précise sur la suppression ou non de votre fichier, vous devez également indiquer quel fichier, éditeur, logiciel de sauvegarde/VCS, système de fichiers, matériel, stockage vous utilisez.


Comment supprimer réellement le fichier ?

C'est probablement la prochaine question que vous vous poserez. Il existe de nombreuses solutions logicielles et matérielles. Puisque SuperUser est no pour la promotion de logiciels/matériels, au lieu de dire des noms, je vais vous dire comment trouver les.

  • Pour supprimer du stockage : recherchez les mots clés "supprimer un fichier en toute sécurité". Pour des résultats plus précis, ajoutez votre système d'exploitation, le type de disque dur ou toute autre information dont vous disposez dans la requête.
  • Pour le nettoyer de la mémoire/cache : recherchez "nettoyage sécurisé de la RAM | RAM vidéo | cache du disque dur".

Comme vous l'avez peut-être remarqué, le mot clé ici est "nettoyage sécurisé".

Les prochaines questions peuvent être :

  • Comment ces logiciels fonctionnent-ils ?
    Ils écrasent l'espace du fichier/mémoire avec des 0, des 1 ou des bits aléatoires pendant quelques tours, de sorte que les anciennes informations ne puissent pas être récupérées.
  • Je peux leur faire confiance ?
    Ça dépend. Si vous le voulez pour des applications sécurisées (comme la banque), afin d'obtenir des certifications de sécurité (ce qui est requis pour les institutions financières), alors vous pouvez faire confiance aux outils commerciaux officiels qui ont passé les certifications. Veillez à vérifier les certifications de l'outil. Par exemple, si vous êtes administrateur d'une banque et que les réglementations exigent que les fichiers soient supprimés de manière sécurisée après utilisation, c'est le cas.
    Si vous le voulez pour vous-même, que vous pouvez lire et comprendre le code et les algorithmes, vous pouvez opter pour des solutions open-source éprouvées.

J'espère que cela vous aidera.
S'il y a un point manquant, n'hésitez pas à commenter !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X