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?
źródło
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?
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
jest o wiele bardziej odpowiedni do tego niżcp
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óbrsync -aH
zamiast tego.rsync -avH a/ b
inaczej niżrsync -avH a b
kopiowanie zawartości folderua
(to znaczya/*
) 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.
źródło
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):
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)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.źródło
sudo mount -a
pozwolić, by nadal działało?