Przeciągam i upuszczam folder przez pomyłkę w FileZilla.
~/big_folder
~/some_other_folder
Przeniesiony folder jest bardzo ogromny. Zawiera setki tysięcy plików (moduły_węzła, małe pliki obrazów, dużo folderów)
Dziwne jest to, że po zwolnieniu myszy ruch jest zakończony. Folder „big_folder” zostaje przeniesiony do „some_other_folder”.
~/some_other_folder/big_folder
(nie ma big_folder
w ~/
po przeprowadzce)
Potem zdaję sobie sprawę z błędu i spróbuj cofnąć się, ale nie powiedzie się to zarówno w FileZilla, jak i terminalu.
Następnie muszę cp -r
skopiować pliki z powrotem, ponieważ istnieją kody po stronie serwera uzyskujące dostęp do tych plików~/big_folder
I trzeba czekać wiecznie ...
Co powinienem zrobić?
BTW, oto dane wyjściowe z FileZilla (jest to błąd cofania się):
Status: Renaming '/root/big_folder' to '/root/some_other_folder/big_folder'
Status: /root/big_folder -> /root/some_other_folder/big_folder
Status: Renaming '/root/some_other_folder/big_folder' to '/root/big_folder'
Command: mv "big_folder" "/root/big_folder"
Error: mv /root/some_other_folder/big_folder /root/big_folder: received failure with description 'Failure'
received failure with description 'Failure'
.mv /root/some_other_folder/big_folder /root/big_folder
. Jaki komunikat o błędzie pojawia się?cp -al
mv vs cp
Pytanie OP jest adresowane, ale chciałbym usłyszeć, dlaczego był w stanie przesunąć folder natychmiast w jednym kierunku, ale nie w drugim.Odpowiedzi:
Jeśli katalog zostanie przeniesiony w tym samym systemie plików (tej samej partycji), wystarczy zmienić nazwę ścieżki do katalogu. Żadne dane oprócz pozycji katalogu dla samego katalogu nie muszą być zmieniane.
Podczas kopiowania katalogów dane dla każdego pliku muszą zostać zduplikowane. Obejmuje to odczytanie wszystkich danych źródłowych i zapisanie ich w miejscu docelowym.
Przeniesienie katalogu między systemami plików wymagałoby skopiowania danych do miejsca docelowego i usunięcia ich ze źródła. Zajmie to tyle samo czasu, co kopiowanie (duplikowanie) danych w jednym systemie plików.
Jeśli FileZilla z powodzeniem zmienił nazwę katalogu z
~/big_folder
na~/some_other_folder/big_folder
, to przywróciłbym to za pomocą... po pierwszym upewniając się, że nie ma katalogu o nazwie
~/big_folder
(jeśli nie było, że ruch będzie umieścićbig_folder
odsome_other_folder
do~/big_folder
katalogu jako podfolder).źródło
mv ~/some_other_folder/big_folder ~/
po upewnieniu się, że nie ma innychbig_folder
w katalogu domowym. Nigdy nie korzystałem z FileZilla.Istniejąca odpowiedź jest świetna, ale chciałbym ją nieco rozwinąć, pokazując dokładnie, co dzieje się podczas przenoszenia, a nie podczas kopiowania pliku. Kiedy patrzysz na syscalls podczas kopiowania, widzisz:
Spowoduje to otwarcie pliku źródłowego, a następnie utworzenie drugiego pliku. Następnie odczytuje zawartość pliku źródłowego do pamięci i zapisuje tę pamięć do pliku docelowego. Wymaga to kilku przełączników kontekstu i niektórych dyskowych operacji we / wy, które mogą być dość wysokie w przypadku dużych plików. Jeśli jednak przeniesiesz plik, zobaczysz:
Należy pamiętać, że nazwa pliku będzie widoczna tylko wtedy, gdy znajduje się na tej samej partycji na tym samym dysku fizycznym. Jeśli utworzysz ogromny, wielobajtowy plik, a następnie przeniesiesz go między dwie lokalizacje w domu, zauważysz, że akcja zakończy się natychmiast. Jeśli natomiast przeniesiesz je na urządzenie zewnętrzne, przeniesienie zajmie tyle samo czasu, jak w przypadku użycia
cp
. Wynika to z faktu, że przeniesienie pliku można wykonać tylko poprzez zmianę jego nazwy, jeśli znajduje się on na tej samej partycji.źródło
getdents()
imkdir()
połączeń rozsypanych wokół.