Czy zmiana nazwy folderu zawierającego 180 GB za pomocą mv
polecenia jest ryzykowna ?
Mamy folder /data
zawierający 180 GB.
Chcemy zmienić nazwę /data
folderu /BD_FILES
na mv
polecenie.
Czy to jest bezpieczne?
Czy zmiana nazwy folderu zawierającego 180 GB za pomocą mv
polecenia jest ryzykowna ?
Mamy folder /data
zawierający 180 GB.
Chcemy zmienić nazwę /data
folderu /BD_FILES
na mv
polecenie.
Czy to jest bezpieczne?
Odpowiedzi:
Zmiana nazwy folderu jest bezpieczna, jeśli pozostaje on w tym samym systemie plików.
Jeśli jest to punkt montowania ( /data
wygląda mi na to, że może to być punkt montowania, sprawdź to za pomocą mount
), musisz zrobić coś innego niż zwykłe, mv
ponieważ mv /data /BD_FILES
przeniesie dane na partycję root (co może nie być tym, co chcesz się zdarzyć).
Należy odmontować system plików, zmienić nazwę teraz pustego katalogu, zaktualizować /etc/fstab
przy użyciu nowej lokalizacji dla tego systemu plików, a następnie ponownie zamontować system plików w lokalizacji o zmienionej nazwie.
Innymi słowy,
umount /data
mv /data /BD_FILES
(zakładając, /BD_FILES
że jeszcze nie istnieje, w takim przypadku najpierw usuń go z drogi)/etc/fstab
, zmiana punktu montowania z /data
na/BD_FILES
mount /BD_FILES
Nie wiąże się to z kopiowaniem żadnych plików, zmienia jedynie nazwę katalogu, który działa jako punkt podłączenia systemu plików.
Jeśli zmiana nazwy katalogu wiąże się z przeniesieniem go do nowego systemu plików (tak byłoby w przypadku, gdy /data
znajduje się on na jednym dysku, podczas gdy /BD_FILES
znajduje się on na innym dysku, często należy na przykład przenosić rzeczy na większą partycję) , Zaleciłbym skopiowanie danych, pozostawiając nienaruszony oryginał, dopóki nie sprawdzisz, czy kopia jest w porządku. Możesz to zrobić za pomocą
rsync -a /data/ /BD_FILES/
na przykład, ale zapoznaj się z rsync
instrukcją dotyczącą tego, co robi i czego nie robi (na przykład nie zachowuje twardych linków).
Po zmianie nazwy folderu należy również upewnić się, że istniejące procedury (programy i użytkownicy korzystający z folderu, kopie zapasowe itp.) Są świadomi zmiany nazwy.
mv
po prostu wykona rename
wywołanie systemowe, ale z powodu okoliczności nie zdaje sobie sprawy, że zamierza skopiować pliki i usunąć oryginał. Jeśli muszę być absolutnie pewien, że wykonywane jest tylko rename
wywołanie systemowe i mv
nie zrobię czegoś „sprytnego” za moimi plecami, otwieram powłokę Pythona i używam os.rename
.
mkdir /BD_FILES && mount -M /data /BD_FILES && rmdir /data
rsync
jest to, że restartowalne.
rsync -a
zachowuje prawie wszystkie metadane, ale nie twarde linki, listy ACL lub rozszerzone atrybuty (dodaj -HAX
do tego).
rename
polecenia o różnych zachowaniach. Myślę, że to wystarczający powód, aby nie używać rename
polecenia, gdy chcesz mieć pewność, co zamierza zrobić.
Jeśli zmienisz tylko nazwę (źródło i cel w tym samym systemie plików), będzie to po prostu zmiana nazwy pozycji katalogu. To się powiedzie, a katalog ma nową nazwę, lub zawiedzie, w którym to przypadku nic się nie zmienia * .
Jeśli źródło i cel znajdują się w różnych systemach plików, dane muszą zostać skopiowane przez mv
. Różnice w funkcjach systemu plików, takie jak maksymalny rozmiar pliku, ograniczenia nazw plików itp., Mogą powodować problemy. Aby uniknąć problemów, należy najpierw skopiować pliki ( cp
, rsync
...) i po pomyślnym zakończeniu kopiowania, usuń pliki w oryginalnej lokalizacji.
* Jednak istnieją pewne przypadki narożne, na przykład wspomniane w sekcji BŁĘDY w zmianie nazwy man 2
Jak powiedzieli inni, zmiana nazwy folderu nie stanowi nieodłącznego zagrożenia dla zawartości. Istnieje jednak inne ryzyko, które warto rozważyć.
Istniejące procedury, skrypty, skróty zdefiniowane przez użytkownika i konfiguracje, które odnoszą się do pierwotnej lokalizacji, mogą zostać zerwane przez tę zmianę, a jeśli ścieżki są przechowywane w bazie danych, na przykład ich aktualizacja może być dużym zadaniem.
Jedną z rzeczy, które możesz zrobić, jest utworzenie dowiązania symbolicznego do nowej nazwy katalogu, ale pozostaw na chwilę starą nazwę. To da ci czas na ocenę wpływu tej zmiany. Możesz tymczasowo usunąć starą nazwę, sprawdzić, czy są jakieś problemy, a jeśli tak, po prostu odtwórz starą nazwę, aby ludzie mogli kontynuować pracę, podczas gdy ty zastanawiasz się, co należy zaktualizować.
Polecenie coś takiego powinno to zrobić:
ln -s /data /BD_FILES
mv thing1 thing2 ; ln --symbolic ./thing2 thing1
. W ten sposób mam nową nazwę i mogę łatwo przetestować brak starej, usuwając dowiązanie symboliczne.
Zmień nazwę na atomową. Jedynym uzasadnionym ryzykiem jest to, że mv
z jakiegoś powodu decyduje się skopiować wszystko, co powoduje awarię w połowie. Jeśli masz GNU mv
, mv -T
usuniesz to ryzyko.
mv -T
informuje mv
, że przenosi się do folderu innego niż folder; co spowoduje, że odmówi zrobienia, mkdir()
co z kolei spowoduje awarię podczas przenoszenia folderu i z jakiegoś powodu postanowił skopiować.
Wiele mv -T
lat temu brałem udział w usuwaniu błędów podczas pracy nad pracą magisterską. Robił to źle w zbyt wielu przypadkach na krawędzi.
Z drugiej strony masz 180 GB danych użytkownika na partycji głównej. Prawdopodobnie chcesz to przenieść z partycji głównej.
mv
z-i
opcją.