Welche Änderungen finden bei Verwendung des Befehls mv auf der Festplatte statt?

7

Unter folgenden Bedingungen-

  1. mv innerhalb derselben Festplattenpartition
  2. mv auf eine andere Partition in derselben Festplatte
  3. mv auf ein anderes Gerät (zB USB HDD)

Wird die gesamte Datei verschoben oder handelt es sich um eine sehr kleine Änderung wie eine Neuzuweisung von Zeigern?

user13107
quelle
Das hängt wahrscheinlich von den Quell- und Zieldateisystemen ab, und als solche gibt es wahrscheinlich keine Antwort. Wenn Quelle und Ziel genau dasselbe Dateisystem sind, werden für die meisten gängigen Unix / Linux-Dateisysteme normalerweise nur wenige Buchhaltungsbits gemischt.
jw013
@ jw013 Danke für den Kommentar. Ich habe die Frage bearbeitet. Der Unterschied zwischen Dateisystem und Festplattenpartition ist mir nicht klar.
user13107
Das Dateisystem ist eine Art 'Beschreibung', wie die Datei auf einer Festplatte gespeichert wird. Beispiele für Dateisysteme können ext3, ext4 oder NTFS sein. Eine Partition ist ein Teil der Festplatte, der ein Dateisystem enthalten kann.
Paweł Rumian
@gorkypl Es scheint also, dass eine einzelne Festplatte mehrere Partitionen mit denselben / unterschiedlichen Dateisystemen enthalten kann.
user13107
1
Genau das, was du gesagt hast. Ihre Frage ist nicht schlecht, aber wie jw013 sagte, hängt die Antwort vom Dateisystem ab, da verschiedene Dateisysteme das mvVerfahren auf unterschiedliche Weise implementieren können.
Paweł Rumian

Antworten:

5

Es liegt an jedem Dateisystem, wie ein Verschieben innerhalb des Dateisystems (auch als Umbenennen einer Datei bezeichnet) behandelt wird, aber Dateisysteme handhaben dies praktisch universell, indem sie Verzeichniseinträge aktualisieren, ohne den Inode oder den Dateiinhalt zu verschieben.

Ein Wechsel zwischen Dateisystemen (es spielt keine Rolle, ob er sich auf demselben physischen Medium befindet oder nicht) wird als Dateikopie behandelt, gefolgt von einem Löschen. Dies ist genau das, was der mvBefehl tut. Dies bedeutet natürlich, dass das Zieldateisystem eine neue Kopie der Datei erstellen muss.

Celada
quelle
Vielen Dank. Wenn mvdie Datei vor dem Löschen unterbrochen wird, bleibt sie an der Quelle intakt?
user13107
1
Ja, Sie werden die Quelldatei auf jeden Fall behalten, wenn sie mvunterbrochen wird. Abhängig davon, ob mvbei einer Unterbrechung die Möglichkeit besteht, nach sich selbst aufzuräumen, finden Sie möglicherweise auch eine teilweise kopierte Datei am Ziel!
Celada
Was ist mit unterschiedlicher Partition, aber gleichem Dateisystemfall? Hier auch kopieren-> löschen oder nur Verzeichniseinträge aktualisieren?
user13107
1
Dateisysteme erstrecken sich normalerweise nicht über Partitionen, sodass dieser Fall normalerweise nicht auftreten kann.
Jim Paris
1
@ user13107 Ich weiß nichts über MS Windows und "Laufwerke", aber es klingt so, als ob Ihr "C: / Laufwerk" und "D: / Laufwerk" Dateisysteme des gleichen Typs enthalten könnten, aber sicherlich nicht beide tatsächlich das gleiche Dateisystem! Vielleicht denken Sie Dateisystem - Typen wie zfs und Btrfs , die tatsächlich können mehrere Blockgeräte (zB Partitionen) erstrecken? In diesem Fall ist die Antwort dieselbe wie immer beim Umbenennen einer Datei innerhalb eines Dateisystems: Nur der Verzeichniseintrag wird verschoben.
Celada
1

man mv sagt:

 As the rename(2) call does not work across file systems, mv uses cp(1) and rm(1) to
 accomplish the move.  The effect is equivalent to:

       rm -f destination_path && \
       cp -pRP source_file destination && \
       rm -rf source_file
DevonDahon
quelle