Mój /usr
folder musi zostać przeniesiony na nową partycję. Jak mogę to zrobić bez usuwania zawartości?
Czy można to zrobić, gdy Ubuntu jest uruchomione, czy muszę do tego użyć LiveCD?
Mój /usr
folder musi zostać przeniesiony na nową partycję. Jak mogę to zrobić bez usuwania zawartości?
Czy można to zrobić, gdy Ubuntu jest uruchomione, czy muszę do tego użyć LiveCD?
Odpowiedzi:
Najbezpieczniej byłoby użyć Live CD, ale możesz zrobić:
/usr
nie zmienia się podczas wykonywania tej czynności./etc/fstab
aby /usr
został zamontowany przy następnym restarcieZobacz poniżej szczegółowe informacje na temat każdego kroku.
Pamiętaj, że nie możesz zamontować nowej partycji /usr
podczas działania, ponieważ będzie wiele plików, /usr
które będą otwarte.
Chciałbym użyć cp -a
. -a
jest opcją archiwizacji. Od strony man :
-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
Musisz znać identyfikator UUID nowej partycji. Możesz zobaczyć mapowanie, wykonując:
$ ls -l /dev/disk/by-uuid/
A następnie dodaj ten wiersz do /etc/fstab
:
UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2
Zmień UUID na UUID i zmień ext4
na typ używanego systemu plików - powinieneś o tym wiedzieć, jeśli skonfigurowałeś partycję.
Po ponownym uruchomieniu stare pliki /usr
na partycji głównej zostaną ukryte przez nową zamontowaną partycję /usr
. Ale możemy użyć pewnych sztuczek montowania wiązania, aby dostać się do starych plików, a następnie je usunąć.
$ sudo mount --bind / /mnt
$ sudo rm -rf /mnt/usr/*
$ sudo umount /mnt
Ale niewielkie pomyłki (np. Naciśnięcie Enter, gdy pisałeś tylko na klawiaturze sudo rm -rf /mnt
) mogą spowodować katastrofę, więc skorzystałbym z tej metody tylko wtedy, gdy byłbyś bardzo pewny tego, co robisz, naprawdę nie mógł poradzić sobie z żadnymi przestojami lub nie miał fizyczny dostęp do maszyny i dlatego nie można było uruchomić Live CD lub Live USB.
rsync
zamiast tego podać wariantową odpowiedź ?
rsync -avz
. Rsync pozwala na ponowne uruchomienie kopii i powinien być ogólnie używany podczas przenoszenia między partycjami, blokowaniem urządzeń lub maszyn.
cp
. Nie zachowuje TWARDYCH LINKÓW. W przyszłości spowoduje to uszkodzenie aktualizacji pakietów. Na przykład /usr/bin/s2p
i /usr/bin/psed
jest tym samym plikiem. Przeniesienie za pomocą cp
spowoduje utworzenie 2 niezależnych wersji tego pliku. Rób rsync -aH
zamiast tego.
rsync -avH a/ b
inaczej niż rsync -avH a b
kopiowanie zawartości folderu a
(to znaczy a/*
) w pierwszym przypadku i samego folderu w sekundę. Upewnij się, że używasz ukośnika tutaj.
Ponieważ większość używanych bibliotek znajduje się w / usr, nie polecałbym przenoszenia tego katalogu podczas uruchamiania Ubuntu. W rzeczywistości prawdopodobnie pojawia się komunikat o błędzie, gdy próbujesz to zrobić. Dlatego najlepiej jest użyć LiveCD.
Możesz użyć kilku możliwości przenoszenia / kopiowania plików cp, rsync itp. Chcesz mieć pewność, że wszelkie dowiązania symboliczne są tworzone, a nie tylko kopiowane. Zarówno cp, jak i rsync mają takie opcje.
Po przeniesieniu plików na inną partycję należy dodać kolejne podłączenie w / etc / fstab, aby zamontować nową partycję na / usr.
Uwaga: Nie mam pojęcia, co robię, po prostu kopiuję polecenia i postępuję zgodnie z sugestiami innych. Może to być niewłaściwy sposób, ale działa dla mnie (przynajmniej na razie).
Tak to zrobiłem (zgodnie z odpowiedzią Hamisha i komentarzami):
Skopiuj wszystkie pliki nowo utworzonej partycji (zastąp ją lokalizacją partycji, powinna ona wyglądać podobnie do mojej):
rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c
W tym momencie zdałem sobie sprawę, że skopiował wszystko do /usr
folderu na partycji, co nie będzie działać , więc skopiowałem wszystko (z menedżerem plików) z tego folderu do katalogu głównego partycji i usunąłem to puste folder później.
Edycja /etc/fstab
(to samo, co w odpowiedzi Hamisha, oczywiście zamień na swój UUID)
UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr ext4 defaults 0 2
Krok, który okazał się niezbyt mądry: zmieniłem nazwę aktualnie zamontowanej /usr
partycji na /usrBACKUP
, tak, aby wiedzieć, że po ponownym uruchomieniu systemu w rzeczywistości uruchamia się ponownie na nowo utworzonej partycji, a nie na starej . Potem wszystko zatrzęsło się na ekranie i musiałem go wyłączyć, naciskając długo klawisz zasilania (genialny jak jestem) . Pomiń ten krok, jeśli nie chcesz poprawiać swojego systemu.
Uruchom ponownie system
Po ponownym uruchomieniu komputera otwórz Monitor systemu lub podobną aplikację, aby sprawdzić, czy jest nowy /usr
partycja jest zamontowana, i sprawdź, czy wszystko poszło zgodnie z planem.
Po sprawdzeniu, czy wszystko jest w porządku, możesz usunąć starą /usr
partycję. Zatrzymam moje na wypadek, gdyby coś poszło nie tak.
sudo mount -a
pozwolić, by nadal działało?
rsync
jest o wiele bardziej odpowiedni do tego niżcp