Czy istnieje dobre narzędzie do kopiowania plików?

8

Dialog kopiowania został zablokowany na 0 sekund ...

Ilekroć próbuję skopiować duże pliki na mój pendrive USB (w dowolnym formacie), zawsze zatrzymuje się w ostatniej chwili. Kończy się po długim czasie .

Szukałem Zapytaj Ubuntu o podobne posty i dostałem wiele , ale żadne z nich nie ma dobrych rozwiązań.

Więc ... Czy jest jakieś alternatywne narzędzie do kopiowania, takie jak Teracopy w systemie Windows?

Czy są jakieś poprawki, które mogę zrobić?

Wpisz opis zdjęcia tutaj

Severus Tux
źródło
Daj mi również znać, jakie pliki powinienem przesłać w celach informacyjnych
Severus Tux,
2
Nie jestem do końca pewien, ale zdecydowanie zakładam, że twój problem jest związany z pamięcią podręczną USB . Szukaj postów, jak to wyłączyć. Cały proces kopiowania będzie wtedy wyglądał wolniej, ale powinien być naprawdę zakończony, kiedy wygląda na ukończony.
Bajt Dowódca
@ByteCommander Wolniej, czy masz na myśli rzeczywistą prędkość ??
Severus Tux,
2
Nie znam się zbytnio na tym temacie, ale buforowanie po prostu przechowuje w pamięci dane, które chcesz zapisać na urządzeniu USB, i zapisuje je później, gdy uzna, że ​​magistrala lub urządzenia są mniej zajęte, lub gdy może zoptymalizować sposób aby zapisać bloki danych razem ... To nie powinno poprawić faktycznej fizycznej prędkości zapisu (dużo), po prostu pojawi się szybciej, ponieważ proces kopiowania zgłasza się, gdy tylko wszystkie dane zostaną zapisane w pamięci podręcznej. Ale nadal zajmuje więcej czasu, aby zapisać pamięć podręczną na urządzeniu. Zresztą nie można go od razu odłączyć, zanim pamięć podręczna nie zostanie zapisana
Byte Commander
Tak, rzeczywista prędkość kopiowania byłaby taka sama (być może nieco wolniejsza, ponieważ bufor zmniejsza prawdopodobieństwo, że nadejdzie moment, w którym nic nie jest zapisywane na dysku, ale niewiele w słabo załadowanym systemie), ale okno dialogowe postępu byłoby dokładniejsze.
hobbs

Odpowiedzi:

6

Nie powinieneś się tym zbytnio przejmować.
Może twój pendrive USB ma „niższą jakość”.
Dane wyjściowe okna dialogowego dotyczące czasu są mylące.

Inne narzędzia do kopiowania mogą mieć inne zachowanie wyjściowe,
ale nie poprawiają prędkości zapisu na dysku USB.
Najważniejsze jest to, że w końcu akcja kopiowania się powiedzie.

Możesz zoptymalizować harmonogramy wejścia / wyjścia dysków.

Zainstaluj gksu(jeśli jeszcze tego nie zrobiłeś), aby edytować pliki geditjako root:

sudo apt-get install gksu  

Teraz zoptymalizuj priorytet wszystkich uruchomionych procesów dla różnych typów dysków:

gksudo gedit /etc/udev/rules.d/60-schedulers.rules

Wklej następujące wiersze do tego pustego pliku i zapisz plik później:

# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"  

Wprowadzone zmiany obowiązują po ponownym uruchomieniu systemu operacyjnego.

Ponadto ... alternatywne rozwiązanie kopiowania jest dostępne w repozytoriach Ubuntu:

sudo apt-get install dirdiff  

Teraz uruchom narzędzie z terminala, aby porównać lub skopiować pliki i foldery:

dirdiff

dirdiffjest GUI dla diffi może obsługiwać maksymalnie 5 drzew. Wyświetla okno główne z listą plików różniących się między drzewami, z kolorowymi kwadratami wskazującymi względny wiek wersji. Menu pozwala wyświetlić różnice między dowolnymi dwoma wersjami w innym oknie. Kolejne menu pozwala kopiować pliki i foldery z jednego drzewa do drugiego.

Podsumowanie: Najważniejsza jest jakość dysku USB i jego szybkość zapisu!

cl-netbox
źródło
7

Powodem, dla którego kopiowanie odbywa się tak, jak robisz, jest to, że zapis na dysk USB jest asynchroniczny .

Podczas kopiowania pliku jest on faktycznie kopiowany do bufora napędu USB, który znajduje się w pamięci RAM komputera. Pierwsza część kopii jest bardzo szybka, ponieważ właśnie trafia do bufora. Dane są usuwanez bufora na dysk USB w znacznie wolniejszym tempie. Po zapełnieniu bufora musi poczekać, aż niektóre dane zostaną opróżnione na dysk, zanim będzie mógł umieścić je w buforze, więc kopia następnie zwalnia, skutecznie do prędkości napędu USB. Po umieszczeniu całego pliku w buforze wydaje się, że plik został skopiowany. Jednak nie wszystkie dane zostały usunięte z bufora na sam dysk USB. Niektóre programy do kopiowania po prostu powracają i pozwalają na kontynuowanie czyszczenia w tle. Niektórzy zaczekają, aż wszystkie dane zostaną usunięte, dlatego pozostanie na 100% przez jakiś czas.

Możesz przełączyć dysk w tryb synchroniczny, co oznacza, że ​​wszystkie dane są natychmiast zapisywane na dysku USB bez użycia bufora. Sprawi to wrażenie płynniejszego transferu danych, ale może faktycznie skończyć się ogólnym zmniejszeniem prędkości.

Jeśli ręcznie zamontujesz dysk z wiersza poleceń, możesz dodać -o sync.

Jeśli montujesz go za pomocą fstab, możesz dodać syncopcję.

Jeśli polegasz na montowaniu go przez Ubuntu podczas uzyskiwania do niego dostępu w GUI, możesz zmodyfikować opcje montowania z wiersza poleceń po zamontowaniu:

sudo mount -o remount -o sync /media/yourname/diskname
Majenko
źródło
2
To odpowiedź.
Kos
2

Problem prawdopodobnie polega na tym, że plik zostanie w całości odczytany i zapisany w pamięci, zanim zostanie całkowicie zapisany na dysku docelowym.

Nie oznacza to dokładnej odpowiedzi na pytanie, ale pvw przypadku dużych plików można użyć obejścia z wiersza polecenia:

sudo add-apt-repository universe && sudo apt-get update && sudo apt-get install pv

Ilekroć trzeba skopiować duży plik:

pv /path/to/big_file >/media/username/usb/big_file

Należy zauważyć, że cierpi to na podobny niepożądany problem buforowania, gdy jest używany w rurze; w takim przypadku poprawka ogranicza szybkość transferu do czegoś nieco powyżej prędkości zapisu dysku docelowego:

[...] | pv -L 10M >/media/username/usb/big_file # Limits the transfer rate to 10 MB/s
kos
źródło
1

Istnieje wiele alternatyw. Możesz użyć metody wiersza poleceń:

cp *source* *target*

gdzie źródłem jest plik, który chcesz skopiować, a docelowy to plik lub folder, do którego chcesz skopiować. Dalsze opcje można znaleźć na https://softwarerecs.stackexchange.com/

Starszy Geek
źródło
0
dd if=INPUT_FILE_PATH of=OUTPUT_FILE_PATH bs=$(( 64 * 1024 * 1024 )) oflag=sync

Odczyta to z twojego ifpliku i zapisze do ofpliku we fragmentach 64MiB i zaczeka na zapisanie każdego fragmentu przed rozpoczęciem następnego. Narzędzie, którego używasz, najprawdopodobniej po prostu odczytuje plik do pamięci, a następnie wysyła go na dysk (i nie wiadomo, ile bajtów jednocześnie robi). Buforowanie zapisu może odbywać się jednak w samym kluczu USB… Tak więc 60 MB na sekundę, jaką otrzymujesz, to szybkość przesyłania danych przez połączenie USB z wewnętrzną pamięcią podręczną klucza. Ale nie jest to prawdopodobne, chyba że jest to klucz USB3. USB2 nie ma wystarczającej przepustowości, aby obsłużyć 60 Mb na sekundę.

Dmitrij Rubanowicz
źródło
0

Nie ma takiej potrzeby. Po prostu otwórz okno terminala, gdy transfer pokazuje 0% po lewej i wpisz syncZe stron podręcznika polecenie synchronizacji opróżnia bufory systemu plików, ale oczywiście opróżnia tylko te, do których masz prawa. Jeśli chcesz je spłukać, wpisz wszystkiesudo sync

Scooby-2
źródło