Mein /usrOrdner muss auf eine neue Partition verschoben werden. Wie kann ich das tun, ohne den Inhalt zu löschen?
Kann das gemacht werden, während Ubuntu läuft, oder muss ich dafür die LiveCD verwenden?
Mein /usrOrdner muss auf eine neue Partition verschoben werden. Wie kann ich das tun, ohne den Inhalt zu löschen?
Kann das gemacht werden, während Ubuntu läuft, oder muss ich dafür die LiveCD verwenden?
Antworten:
Es wäre am sichersten, eine Live-CD zu verwenden, aber Sie könnten Folgendes tun:
/usrnicht ändert./etc/fstabdamit /usrbeim nächsten Neustart gemountet wirdEinzelheiten zu den einzelnen Schritten finden Sie weiter unten.
Beachten Sie, dass Sie die neue Partition nicht mounten können, /usrwährend sie ausgeführt wird, da viele Dateien /usrdarin geöffnet sein werden.
Ich würde verwenden cp -a. -aist die Archivierungsoption. Von der Manpage :
-a, --archive
same as -dR --preserve=all
...
-d same as --no-dereference --preserve=links
...
-P, --no-dereference
never follow symbolic links in SOURCE
...
--preserve[=ATTR_LIST]
preserve the specified attributes (default:
mode,ownership,timestamps), if possible additional attributes:
context, links, xattr, all
...
-R, -r, --recursive
copy directories recursively
Sie müssen die UUID Ihrer neuen Partition kennen. Sie können das Mapping folgendermaßen anzeigen:
$ ls -l /dev/disk/by-uuid/
Und dann füge diese Zeile hinzu zu /etc/fstab:
UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2
Ändern Sie die UUID in Ihre UUID und ändern Sie ext4sie in den verwendeten Dateisystemtyp. Dies sollten Sie wissen, wenn Sie die Partition eingerichtet haben.
Nach dem Neustart werden die alten Dateien in /usrder Root-Partition von der neuen Partition verborgen, auf der sie eingehängt sind /usr. Wir können jedoch einige Mount-Bind-Tricks verwenden , um zu den alten Dateien zu gelangen und diese dann zu löschen.
$ sudo mount --bind / /mnt
$ sudo rm -rf /mnt/usr/*
$ sudo umount /mnt
Ein geringfügiger Tippfehler (z. B. bei der Eingabe die Eingabetaste drücken sudo rm -rf /mnt) kann jedoch zu einer Katastrophe führen. Daher würde ich diese Methode nur dann verwenden, wenn Sie sehr zuversichtlich sind, wirklich keine Ausfallzeiten bewältigen können oder keine hatten physischer Zugriff auf die Maschine und daher kein Booten von einer Live-CD oder einem Live-USB-Stick möglich.
rsyncstattdessen verwendet?
rsync -avz. Rsync ermöglicht den Neustart von Kopien und sollte im Allgemeinen beim Wechseln zwischen Partitionen, Blockgeräten oder Computern verwendet werden.
cp. HARD LINKS bleiben nicht erhalten. Dies wird in Zukunft die Paket-Upgrades stören. Zum Beispiel /usr/bin/s2pund /usr/bin/psedist die gleiche Datei. Wenn Sie mit verschieben, cpwerden 2 unabhängige Versionen dieser Datei erstellt. Mach rsync -aHstattdessen.
rsync -avH a/ banders behandelt als beim rsync -avH a bKopieren des Inhalts des Ordners a(d. H. a/*) Im ersten Fall und des Ordners selbst in dieser Sekunde. Stellen Sie sicher, dass Sie hier den Schrägstrich verwenden.
Da sich die meisten verwendeten Bibliotheken in / usr befinden, würde ich nicht empfehlen, dieses Verzeichnis zu verschieben, während Ubuntu ausgeführt wird. In der Tat erhalten Sie wahrscheinlich Fehlermeldungen, wenn Sie versuchen, dies zu tun. Verwenden Sie daher am besten die LiveCD.
Sie können verschiedene Möglichkeiten nutzen, um die Dateien cp, rsync usw. zu verschieben / kopieren. Sie möchten sicherstellen, dass Symlinks erstellt und nicht nur kopiert werden. cp und rsync haben beide Optionen dafür.
Nachdem Sie die Dateien auf die andere Partition verschoben haben, müssen Sie einen weiteren Mount in / etc / fstab hinzufügen, um die neue Partition in / usr zu mounten.
Achtung: Ich habe keine Ahnung, was ich tue, ich kopiere nur Befehle und tue, wie von den anderen vorgeschlagen. Dies ist möglicherweise die falsche Methode, funktioniert aber für mich (zumindest für den Moment).
So habe ich es gemacht (gemäß der Antwort von Hamish und den Kommentaren):
Kopieren Sie alle Dateien der neu erstellten Partition (ersetzen Sie sie durch den Speicherort Ihrer Partition, sie sollte ähnlich wie meine aussehen):
rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c
An diesem Punkt habe ich festgestellt, dass es alles in den /usrOrdner auf der Partition kopiert hat , was nicht funktionieren wird , also habe ich alles (mit dem Dateimanager) von diesem Ordner in das Stammverzeichnis der Partition kopiert und das leere gelöscht Ordner danach.
Bearbeiten /etc/fstab(wie in Hamishs Antwort, natürlich durch Ihre UUID ersetzen)
UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2
Ein Schritt, der sich als wenig sinnvoll herausstellte: Ich habe den Namen der aktuell gemounteten /usrPartition in geändert /usrBACKUP, damit ich weiß, dass beim Neustart des Systems tatsächlich die neu erstellte und nicht die alte Partition neu gestartet wird . Danach ging alles schief auf dem Bildschirm, und ich musste es durch langes Drücken der Ein- / Aus-Taste ausschalten (so genial ich bin) . Überspringen Sie diesen Schritt, wenn Sie kein Problem mit Ihrem System haben möchten.
Starten Sie das System neu
Öffnen Sie nach dem Neustart den Systemmonitor oder eine ähnliche Anwendung, um festzustellen, ob Ihre neue /usrPartition gemountet ist, und um zu überprüfen, ob alles wie geplant gelaufen ist.
Nachdem Sie überprüft haben, ob alles in Ordnung ist, können Sie Ihre alte /usrPartition löschen . Ich behalte meine für den Fall, dass etwas schief geht.
sudo mount -azulassen, dass es weiterläuft?
rsyncist dafür so viel besser geeignet alscp