
Ich frage mich, ob dies als sicher gilt. Ich weiß, dass die Dateihandles einwandfrei funktionieren, solange ein Link besteht, und ich weiß, dass der Bezeichner der Inode und nicht der Name ist, aber ich bin nicht sicher, wie es bei verschiedenen FS funktioniert.
Beispielsweise das Kopieren von einer ext4-Festplatte auf einen NTFS-USB-Stick oder das Kopieren von einem FAT-Stick auf ein ext4-Laufwerk.
Ich habe gerade eine Reihe großer Mediendateien kopiert und sie vor dem Kopieren umbenannt. Die Prüfsummen stimmen überein. Ich frage mich, ob das immer sicher ist, ob es auch in die entgegengesetzte Richtung funktioniert, ob es Macken gibt, die ich kennen sollte, oder Gründe, dies zu vermeiden?
Das Betriebssystem/die Distribution ist Ubuntu mit dem Linux-Kernel 5.0.0-15.
Antwort1
Ich bin nicht sicher, wie es bei verschiedenen FS funktioniert.
Der Umbenennungsvorgang selbst wird nicht über verschiedene Dateisysteme hinweg ausgeführt. Es gibt keinen Unterschied zwischen dem Schreiben in eine Datei beispielsweise aus einem Texteditor und dem Schreiben in eine Datei cp
mit einer Quelldatei auf einem anderen Dateisystem.
Unter Linux rename
ist der Systemaufruf für andere Links zur Datei transparent, darunter andere Hardlinks und offene Dateibeschreibungen (und Deskriptoren).Die Manpage besagt ausdrücklich
Offene Dateideskriptoren füralter Pfadsind ebenfalls nicht betroffen.
(Ich qualifiziere nur mit „unter Linux“, weil ich keinen Verweis in POSIX finden konnte. Ich denke, dass dies bei allen POSIX-artigen Betriebssystemen üblich ist.)
Wenn Sie also eine Datei zwischen Dateisystemen kopieren, cp
öffnet die Quelle zum Lesen, das Ziel zum Schreiben und beginnt mit dem Kopieren. Umbenennungsvorgänge wirken sich nicht auf die verwendeten Dateideskriptoren aus. Sie können die Quelle und/oder das Ziel umbenennen, ohne dass dies Auswirkungen hat cp
.
Man kann sich das auch so vorstellen: Der Name der Datei im Verzeichnis, in dem sie enthalten ist, ist Teil ihres Verzeichniseintrags, der auf ihren Inode zeigt. Offene Dateibeschreibungen sind weitere Zeiger auf den Inode, ebenso wie andere Hardlinks. Das Ändern des Dateinamens hat keine Auswirkungen auf andere vorhandene Zeiger.
Beachten Sie, dass Tools wie mv
nicht auf die rename
Möglichkeiten des Systemaufrufs beschränkt sind. Wenn Sie mv
Dateien über mehrere Dateisysteme hinweg verwenden, rename
schlägt das fehl (oder mv
es stellt fest, dass der Vorgang über mehrere Dateisysteme hinweg erfolgt und versucht es erst gar nicht). mv
In diesem Fall muss der Dateiinhalt manuell kopiert und das Original gelöscht werden. Dies führt zu keinen guten Ergebnissen, wenn die umzubenennende Datei gleichzeitig geändert wird.