Mein /usr
Ordner 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?
quelle
Mein /usr
Ordner 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?
Es wäre am sichersten, eine Live-CD zu verwenden, aber Sie könnten Folgendes tun:
/usr
nicht ändert./etc/fstab
damit /usr
beim nächsten Neustart gemountet wirdEinzelheiten zu den einzelnen Schritten finden Sie weiter unten.
Beachten Sie, dass Sie die neue Partition nicht mounten können, /usr
während sie ausgeführt wird, da viele Dateien /usr
darin geöffnet sein werden.
Ich würde verwenden cp -a
. -a
ist 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 ext4
sie in den verwendeten Dateisystemtyp. Dies sollten Sie wissen, wenn Sie die Partition eingerichtet haben.
Nach dem Neustart werden die alten Dateien in /usr
der 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.
rsync
ist dafür so viel besser geeignet alscp
rsync
stattdessen 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/s2p
und/usr/bin/psed
ist die gleiche Datei. Wenn Sie mit verschieben,cp
werden 2 unabhängige Versionen dieser Datei erstellt. Machrsync -aH
stattdessen.rsync -avH a/ b
anders behandelt als beimrsync -avH a b
Kopieren des Inhalts des Ordnersa
(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.
quelle
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):
An diesem Punkt habe ich festgestellt, dass es alles in den
/usr
Ordner 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)Ein Schritt, der sich als wenig sinnvoll herausstellte: Ich habe den Namen der aktuell gemounteten
/usr
Partition 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
/usr
Partition 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
/usr
Partition löschen . Ich behalte meine für den Fall, dass etwas schief geht.quelle
sudo mount -a
zulassen, dass es weiterläuft?