Ist es riskant, Ordner mit 180 GB mit dem mv
Befehl umzubenennen ?
Wir haben einen Ordner /data
, der 180 GB enthält.
Wir wollen den /data
Ordner /BD_FILES
mit dem mv
Befehl in umbenennen .
Ist das ungefährlich?
Ist es riskant, Ordner mit 180 GB mit dem mv
Befehl umzubenennen ?
Wir haben einen Ordner /data
, der 180 GB enthält.
Wir wollen den /data
Ordner /BD_FILES
mit dem mv
Befehl in umbenennen .
Ist das ungefährlich?
Antworten:
Das Ändern des Namens eines Ordners ist sicher, wenn er sich im selben Dateisystem befindet.
Wenn es sich um einen Einhängepunkt handelt ( /data
für mich sieht es so aus, als wäre es ein Einhängepunkt, überprüfen Sie dies mit mount
), müssen Sie etwas anderes als nur einen einfachen mv
Vorgang mv /data /BD_FILES
ausführen, da die Daten in die Root-Partition verschoben werden (was möglicherweise nicht der Fall ist) du willst passieren).
Sie sollten die /etc/fstab
Bereitstellung des Dateisystems aufheben , das jetzt leere Verzeichnis umbenennen, mit dem neuen Speicherort für dieses Dateisystem aktualisieren und dann das Dateisystem am umbenannten Speicherort erneut bereitstellen.
Mit anderen Worten,
umount /data
mv /data /BD_FILES
(Angenommen, /BD_FILES
es existiert noch nicht, dann schiebe es zuerst aus dem Weg.)/etc/fstab
, Ändern des Einhängepunkts von /data
auf/BD_FILES
mount /BD_FILES
Dabei werden keine Dateien kopiert, sondern lediglich der Name des Verzeichnisses geändert, das als Mount-Punkt für das Dateisystem fungiert.
Wenn das Umbenennen des Verzeichnisses das Verschieben in ein neues Dateisystem umfasst (was der Fall wäre, wenn /data
sich dieses auf einer Festplatte befindet, während /BD_FILES
sich diese auf einer anderen Festplatte befindet, was häufig der Fall ist , wenn Sie beispielsweise Dinge auf eine größere Partition verschieben) Ich würde empfehlen, die Daten zu kopieren, während das Original intakt bleibt, bis Sie überprüfen können, ob die Kopie in Ordnung ist. Sie können dies mit tun
rsync -a /data/ /BD_FILES/
Lesen Sie jedoch im rsync
Handbuch nach, was dies bewirkt und was nicht (beispielsweise werden keine festen Links beibehalten).
Nach dem Umbenennen des Ordners müssen Sie auch sicherstellen, dass vorhandene Prozeduren (Programme und Benutzer, die den Ordner verwenden, Sicherungen usw.) über die Namensänderung informiert sind.
mv
, nur einen rename
Systemaufruf auszuführen, aber aufgrund von Umständen, die man nicht bemerkt hat, werden die Dateien kopiert und das Original gelöscht. Wenn ich absolut sicher sein muss, dass nur ein rename
Systemaufruf erfolgt und mv
hinter meinem Rücken nichts "Kluges" geschieht, öffne ich eine Python-Shell und benutze sie os.rename
.
mkdir /BD_FILES && mount -M /data /BD_FILES && rmdir /data
rsync
Schöne daran ist, dass es neu gestartet werden kann.
rsync -a
fast alle Metadaten beibehalten, jedoch keine festen Links, ACLs oder erweiterten Attribute (dafür hinzufügen -HAX
).
rename
Befehle mit unterschiedlichem Verhalten. Ich denke, das ist Grund genug, den rename
Befehl nicht zu verwenden, wenn Sie sicher sein möchten, was er tun wird.
Sie benennen nicht jede Datei im Verzeichnis um, sondern nur eine Datei in /. Das ist, weil:
Das Umbenennen eines Verzeichnisses, egal wie viele Dateien oder wie viele Daten sich darin befinden, ist daher trivial.
Wenn Sie nur umbenennen (Quelle und Ziel im selben Dateisystem), handelt es sich lediglich um eine Umbenennung eines Verzeichniseintrags. Es ist entweder erfolgreich und das Verzeichnis hat einen neuen Namen oder schlägt fehl. In diesem Fall ändert sich nichts * .
Wenn sich die Quelle und das Ziel auf unterschiedlichen Dateisystemen befinden, müssen die Daten von kopiert werden mv
. Unterschiede in den Dateisystemfunktionen, wie z. B. die maximale Dateigröße, Einschränkungen bei den Dateinamen usw., können Probleme verursachen. Um Probleme zu vermeiden, zuerst Kopieren von Dateien ( cp
, rsync
, ...) und nach dem Kopieren erfolgreich abgeschlossen ist , entfernen Sie die Dateien in der ursprünglichen Position.
* Es gibt jedoch einige Eckfälle, die beispielsweise im Abschnitt BUGS in Man 2 Rename erwähnt werden
Wie bereits erwähnt, stellt das Umbenennen eines Ordners kein inhärentes Risiko für den Inhalt dar. Es gibt jedoch ein anderes Risiko, das Sie in Betracht ziehen sollten.
Bestehende Prozeduren, Skripte, benutzerdefinierte Verknüpfungen und Konfigurationen, die auf den ursprünglichen Speicherort verweisen, können durch diese Änderung beschädigt werden. Wenn die Pfade beispielsweise in einer Datenbank gespeichert sind, kann das Aktualisieren eine große Aufgabe sein.
Sie können einen symbolischen Link für den neuen Verzeichnisnamen erstellen, den alten Namen jedoch für eine Weile beibehalten. So haben Sie Zeit, die Auswirkungen dieser Änderung zu bewerten. Sie können den alten Namen vorübergehend entfernen, um festzustellen, ob Probleme vorliegen, und den alten Namen einfach neu erstellen, damit die Benutzer weiterarbeiten können, während Sie herausfinden, was aktualisiert werden muss.
Ein Befehl wie dieser sollte es tun:
ln -s /data /BD_FILES
mv thing1 thing2 ; ln --symbolic ./thing2 thing1
. Auf diese Weise habe ich den neuen Namen und kann die Abwesenheit des alten einfach testen, indem ich den Symlink lösche.
Umbenennen ist atomar. Das einzige vernünftige Risiko besteht darin, dass mv
aus irgendeinem Grund entschieden wird, alles zu kopieren, und dass es auf halbem Weg zum Absturz kommt. Wenn Sie GNU haben mv
, mv -T
wird dieses Risiko beseitigt.
mv -T
sagt, mv
dass es in einen Nicht-Ordner verschoben wird; Dies führt dazu, dass es sich weigert, mkdir()
was wiederum dazu führt, dass es fehlschlägt, wenn ein Ordner verschoben wird und es aus irgendeinem Grund beschlossen hat, zu kopieren.
Ich war vor Jahren an der mv -T
Arbeit an meiner Masterarbeit beteiligt, als ich Wanzen aus meiner Arbeit herausschüttelte . Früher hat es bei zu vielen Randfällen das Falsche getan.
Andererseits verfügen Sie über 180 GB Benutzerdaten auf der Root-Partition. Sie möchten dies wahrscheinlich von der Root-Partition entfernen.
mv
mit der-i
Option an.