Pracuję z folderami, które zawierają wiele plików, na przykład 100 000 lub nawet 1 000 000 plików na folder. Kiedy próbuję przenieść zawartość folderu do innego, mój komputer zawsze się zacina. Nawet gdy proces wydaje się zakończony, nie widzę zawartości żadnego folderu, ponieważ nautilus wydaje się całkowicie zamrożony i muszę zmusić komputer do ponownego uruchomienia. Zauważyłem, że dzieje się tak również wtedy, gdy próbuję przenieść się jak 10 000 plików.
Czy to problem z moim komputerem, czy jest to normalne podczas pracy z tymi liczbami?
Jakiś sprytny sposób na wykonanie tego transferu plików?
cp -R SRC/ DEST/
)gvfs-copy
(zgvfs-bin
pakietu) może być szybsza niżcp
.Odpowiedzi:
Być może rozważ użycie metody czysto wiersza poleceń do przesyłania bardzo dużych ilości plików, bez wątpienia przekonasz się, że proces ten jest znacznie szybszy niż użycie GUI.
Istnieje wiele różnych sposobów osiągnięcia tego celu, ale następujące działały w moim systemie szybko, bezpiecznie i skutecznie:
Kilka wyjaśnień dla tego polecenia:
<destination>
w moim przykładzie. Oczywiście zmodyfikuj to, aby dostosować do własnych potrzeb i pomiń nawiasy.Niekończące się kombinacje są możliwe, ale powinno to działać dobrze i znacznie wydajniej niż GUI. Jedna permutacja na przykład: jeśli chcesz przenieść tylko pliki pdf, możesz uruchomić:
Zastosowanie
xargs
otwiera wiele możliwości, szczególnie przy przenoszeniu tak dużej liczby plików. Wiele, wiele możliwości ...Potencjalne problemy:
Istnieją następujące 2 potencjalne pułapki do rozważenia, dzięki komentatorom poniżej za te przemyślenia:
mv
Nadal przenosi tam pliki! Uważaj tutaj ...-t
opcji (--target-directory
), a folder docelowy jest w rzeczywistości plikiem, przeniesiesz jeden plik, a reszta się nie powiedzie.mv
ma 2 zastosowania: zmień nazwę źródła na miejsce docelowe lub przenieś źródło do katalogu . Ponownie uważaj ...źródło
find . -maxdepth 1 -type f -exec mv -t test {} +
zrobiłbym tak ?-name...
kawałka, ale odszedłemxargs
na miejsce.-t
flagę? Myślę, że wszystkie pliki zostaną „przeniesione” do jednego pojedynczego pliku o nazwietest
, co spowoduje utratę wszystkich plików z wyjątkiem jednego.) Myślę, że wolałbym, abyrsync
potem, jeśli wszystko poszło dobrze, arm
. Mogę jednak wyobrazić sobie scenariusze, w których takiej kontroli nie można zautomatyzować.rsync
przykład napisany jako odpowiedź?mv dir1/* dir2
i uciekaj się tylko,find -exec
jeśli występuje problem lub jeśli chcesz uniknąć dopasowania folderów do globu. (Chociaż w zależności od konwencji nazewnictwa, często*.*
pasuje do większości plików, ale nie do większości katalogów, ponieważ często ma się.extension
pliki typu, a często nie ma.
nazw katalogów)Miałem podobne doświadczenia wcześniej, jest to normalne, gdy mamy do czynienia z dużą liczbą plików. Miałem duży zbiór arkuszy danych PDF (części elektroniczne).
Narzędzia GUI sprawdzają niektóre szczegóły pliku i metadane (Ikona / Miniatura, Rozmiar, ...), w takim przypadku będzie to wielka sprawa. Nawet w widoku ikon i bez miniatur będą się zawieszać, ponieważ większość z nich nie jest zaprojektowana do tak ekstremalnych przypadków. Narzędzie GUI próbuje załadować ikony prezentacji dla wszystkich plików / folderów w katalogu, nawet te elementy nie są widoczne dla użytkownika w bieżącej części ekranu. Sortowanie jest również częścią problemu i nie można go uniknąć.
locate
do szybkiego wyszukiwania zamiastfind
.Do operacji przenoszenia używaj
mv
w terminalu (narzędzia GUI działają powoli, ponieważ próbują okresowo aktualizować widok).Jeśli znajduje się na tej samej partycji, polecenie zmieni tylko wskaźniki w indeksie systemu plików. Jeśli nie, będzie to operacja podwójna (kopiowanie i usuwanie). To będzie drogie.
Jest tylko jeden przypadek, w którym mogę pomóc, jeśli kopiujesz te pliki wiele razy i nie są one aktualizowane. Tak jak zrobiłem, kiedy dzielę się swoją kolekcją z przyjaciółmi, za każdym razem, gdy próbuję skopiować, zajmuje to dekadę. (Jest to bardziej przydatne tylko w przypadku plików o małym rozmiarze)
źródło
Jeśli szukasz rozwiązania, które daje korzyści płynące z operacji w wierszu poleceń z połączeniem interfejsu GUI i elastyczności, polecam
mc
( dowódca północy ).Jest to wizualny menedżer plików oparty na ncurses - masz dwupanelowy widok plików i dostępne menu. Używanie myszy jest możliwe, nawet przez ssh. Możesz przeglądać swój plik fs, sprawdzać pliki za pomocą przeglądarki plików, filtrować według kryteriów w locie i wykonywać operacje kopiowania lub przenoszenia w wierszu poleceń.
Jest to klon dowódcy programu Norton z DOS, który był popularny w połowie lat osiemdziesiątych. Działa dobrze, gdy GUI zaczyna być dla mnie niewiarygodny i idealnie nadaje się do twoich celów.
źródło
Napotkałem nieco podobne problemy - testowałem moją konfigurację RAID i kiedy wykonuję ogromne transfery (np. Ponad 100 000 plików i 1-2 TB danych za jednym razem) wydaje się, że transfery zaczynają się dość szybko - powiedzmy ~ 200 MB / s, następnie szybko zwolnij do rozsądnego plateau ~ 90-120 MB / s (być może po zużyciu pamięci flash na dyskach). Następnie po 20-30 minutach operacja stopniowo zaczyna spadać do znacznie niższego plateau ~ 30-40 MB / s, gorzej w przypadku małych plików - operacja trwa 4-5 godzin bliżej 15 godzin.
Spędziłem trochę czasu próbując zdiagnozować - np. Możliwe usterki dysku. Pomimo wypróbowania różnych narzędzi - wiersza poleceń, nautilus, nie mogłem utrzymać przyzwoitej przepustowości w przypadku bardzo dużych operacji kopiowania.
Dla mnie najlepsze było użycie komendanta północy i za każdym razem, gdy kopiowanie zwalniało, wstrzymywałem operację, aż zgaśnie lampka dysku twardego po wypłukaniu wszelkich trwających operacji - zwykle około minuty - a następnie ponownie zatrzymaj MC i strzeliłby z powrotem do przyzwoitego tempa przez kolejne 20-30 minut. Raczej denerwujące.
źródło