Ist das Umbenennen von Dateien in Windows-Systemen funktional ähnlich wie das Löschen?

9

Nach meinem Verständnis des Windows-Dateisystems kann ein Programm eine Datei gemäß ihrem Pfad lesen. Wenn dieser Pfad geändert wird, kann das zum Lesen dieser Datei verwendete Programm dies nicht mehr. Dies würde bedeuten, dass für alle Programme im Windows-System, die von einer Datei abhängen, die Folgen des Löschens und Umbenennens einer Datei gleich sein müssen.

Der spezielle Fall, von dem diese Antwort abhängt, ist ein eingebettetes System, das unter Windows 2000 ausgeführt wird. Das Handbuch des Dienstanbieters führt den Benutzer zum Löschen der Dateien in einem Ordner. Als vorsichtiger Benutzer habe ich die Dateien einfach in einen Pfad namens "folder_backup" kopiert und den Ordner leer gelassen.

Während dieses Vorgangs hat sich das System zurückgebildet und konnte nicht richtig funktionieren. Daher wurde der Dienstanbieter angerufen, der das Handbuch geschrieben hat. Ihre Diagnose war, dass die Datenbank beschädigt war, weil zwei Datenbanken parallel waren und auf "folder_backup" als zweite Datenbank verweisen. Nach meinem Verständnis wären die Dateien in "D: / folder_backup" inert gewesen, außer im Ausnahmefall eines Programms, das nach Ordnern sucht, die mit "Ordner" beginnen oder alle Inhalte in der Datei "D: /" lesen.

Auf welche nicht undurchsichtige Weise kann ein System noch auf eine umbenannte Datei zugreifen, die sonst unmöglich gewesen wäre, wenn die Datei gelöscht worden wäre?

Tomas Zubiri
quelle
1
Haben Sie tatsächlich die Dateien kopiert (mit zwei Kopien irgendwann und dann das Original gelöscht) oder einfach verschoben?
GSerg
1
Wurde das System läuft in der Zeit , diese Datenbanken zu lesen? Unter Windows (auch Linux) ist es möglich, Dateien zu kopieren, während sie geöffnet sind (abhängig von der Anwendung, die die Dateien in bestimmten "Modi" öffnet). Dies würde wahrscheinlich zu beschädigten Kopien führen, übrigens.
Davidbak
@davidbak Negativ, die Anwendung wurde beim Umbenennen der Dateien geschlossen.
Tomas Zubiri
@GSerg Ich glaube, ich habe den Ordner umbenannt und dann dem Anwendungssetup erlaubt, ihn neu zu erstellen.
Tomas Zubiri
Vergleichen Sie mit Unix-Dateisystemen, bei denen die ID einer Datei eine Ganzzahl ist und ein Dateiname eigentlich nur eine Zuordnung von Namen zu ID ist. Eine Datei wird erst gelöscht, wenn sie keine Namen hat und keine Prozesse geöffnet sind. Durch das Umbenennen einer Datei in Unix wird eine neue Namenszuordnung hinzugefügt und anschließend der alte Name entfernt, sodass die Datei zu keinem Zeitpunkt gelöscht wird.
Raedwald

Antworten:

16

Wirklich die Qual der Wahl.

Harry Johnston
quelle
Wow, ich hatte nicht erwartet, dass es so viele Möglichkeiten gibt, etwas durch Umbenennen einer Datei zu beschädigen. Vielen Dank!
Tomas Zubiri
@ wizzwizz4 2000 ist NT
zdimension
-2

Auf eine umbenannte Datei kann weiterhin von einem anderen Programm zugegriffen werden.

  • Ein Weg, auf den ein anderes Programm weiterhin auf eine umbenannte Datei zugreifen kann, ist eine Umgebungsvariable, die von demselben Programm, das die Datei umbenannt hat, auf den neuen Dateipfad gesetzt wird. Das Programm, das auf diese Datei zugreifen möchte, verwendet die Umgebungsvariable für den Dateipfad anstelle eines festen intern festgelegten Dateipfads.

  • Eine andere Möglichkeit besteht darin, dass die Datei die einzige Datei in einem bestimmten Ordner ist. Das Programm, das diese Datei verwenden möchte, weiß, dass sich niemals mehr als eine Datei in diesem bestimmten Ordner befinden sollte, weiß jedoch, dass sich der Dateiname möglicherweise ändert, das Verzeichnis, in das es gehört, jedoch gleich bleibt. Das Programm verwendet einfach nur die erste Datei, die es in diesem Ordner finden kann. Dies sollte immer diese Datei sein. Dies ist jedoch keine gute Vorgehensweise, und Sie sind mit einer Umgebungsvariablen besser dran.

Andernfalls werden Sie von einigen Programmen automatisch aufgefordert, die Datei zu suchen, bevor Sie den Code weiter ausführen

J03L
quelle