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?
linux
filesystems
mv
yael
quelle
quelle
mv
mit der-i
Option an.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 mitmount
), müssen Sie etwas anderes als nur einen einfachenmv
Vorgangmv /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 tunLesen 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.
quelle
mv
, nur einenrename
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 einrename
Systemaufruf erfolgt undmv
hinter meinem Rücken nichts "Kluges" geschieht, öffne ich eine Python-Shell und benutze sieos.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, denrename
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.
quelle
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
quelle
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
quelle
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 habenmv
,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.
quelle