Korzystam z rsync, aby zsynchronizować katalog z zewnętrznym dyskiem twardym USB. To około 150 koncertów danych. Zgaduję, że ponad 50000 plików.
W tej chwili jest po raz pierwszy synchronizowany, ale kopiuje pliki z prędkością tylko 1-5 MB / s. Wydaje się to niezwykle powolne w przypadku obudowy USB 2.0. Na dysku nie odbywają się również inne transfery.
Oto opcje, których użyłem:
rsync -avz --progress /mysourcefolder /mytargetfolder
Używam Ubuntu Server 9.10.
usb
ubuntu-9.10
usb-flash-drive
rsync
Jake Wilson
źródło
źródło
tar
poleceń potokowych lubcpio
.Odpowiedzi:
Do pierwszej synchronizacji wystarczy użyć
rsync dodaje narzut tylko wtedy, gdy miejsce docelowe jest puste.
także ... opcja -z prawdopodobnie zabija twoją wydajność, nie powinieneś jej używać, jeśli nie przesyłasz danych wolnym linkiem.
źródło
rsync -avz --progress /mysourcefolder/ /mytargetfolder
lub dostaniesz kopięmysourcefolder
wewnętrznejmytargetfolder
zamiast dublowanie zawartościJeśli używasz rsync z szybką siecią lub dyskiem na dysk na tym samym komputerze,
nie używa kompresji -z
i używanie --inplace
przyspiesza to do wydajności dysków twardych lub sieci
kompresja wymaga dużej ilości procesora
nieużywanie w miejscu powoduje, że dysk twardy jest bardzo thrash (używa pliku tymczasowego przed utworzeniem wersji ostatecznej)
kompresja i niestosowanie w miejscu jest lepsze do robienia tego przez Internet (wolna sieć)
NOWOŚĆ: Należy pamiętać o miejscu docelowym ... jeśli włączona jest „kompresja” NTFS ... to poważnie spowalnia duże pliki (powiedziałbym, że 200 MB +) rsync wydaje się być zablokowany, jest to spowodowane tym.
źródło
Użyj
-W
opcji. To wyłącza porównania delta / diff. Gdy czas / rozmiar pliku różnią się, rsync kopiuje cały plik.Usuń także
-z
opcję. Jest to przydatne tylko do kompresji ruchu sieciowego.Teraz
rsync
powinno być tak szybko jakcp
.źródło
-z
jest przydatna tylko przy małym ruchu sieciowym. Jeśli twoja sieć jest wystarczająco szybka, spowolni to, ponieważ będziesz ograniczony przez procesor.-W
: „Jest to ustawienie domyślne, gdy zarówno źródło, jak i miejsce docelowe są określone jako ścieżki lokalne, ale tylko wtedy, gdy nie jest włączona opcja zapisu wsadowego”.Po pierwsze - liczba plików w tym przypadku będzie głównym czynnikiem. Średni rozmiar to 3 MB. Prawdopodobnie wąskie gardło io wpływa na szybkość w przypadku PO. Więcej tutaj - to dość sucha lektura, ale zdjęcie na okładce jest tego warte.
Więc używając rsync do skopiowania do pustego katalogu? Oto kilka sposobów na przyspieszenie:
rsync -a /source /destination >/somewhere/rsync.out 2>/somewhere/rsync.err
- pierwszy> zasadniczo drukuje plik ze wszystkimi rzeczami, które normalnie zobaczysz, a 2> odnosi się do komunikatów o błędach.Moim poleceniem byłoby:
rsync -avAXEWSlHh /source /destination --no-compress --info=progress2 --dry-run
Gdyby wszystko wyglądało dobrze, usunęłbym „--dry-run” i odpuściłem. A, X i E obejmują rozszerzone atrybuty i uprawnienia nie ujęte w opcji -a, l oznacza miękkie linki, H oznacza twarde łącza, a h jest czytelne dla człowieka.
Aktualizowanie już zsynchronizowanego katalogu na dysku USB, tym samym dysku lub w sieci wymaga różnych poleceń rsync, aby zmaksymalizować prędkość transferu.
Bonus - oto strona manuala rsync , a jeśli chcesz przetestować szybkość swojego dysku twardego, bonnie ++ jest dobrą opcją, a dla twojej prędkości sieci spróbuj iperf .
* Post ma prawie dziesięć lat, ale wyszukiwarki na pewno mu się podobają i wciąż go widzę. To dobre pytanie i nie sądzę, że najlepszą odpowiedzią na „jak przyspieszyć rsync” powinno być „zamiast tego użyj cp”.
źródło
Nie mówisz, jaki rozmiar mają twoje pliki. Jeśli istnieje wiele małych plików, zmniejszy to ogólną szybkość transferu, zwiększając opóźnienie ruchu głowicy zarówno na dyskach źródłowych, jak i docelowych, ponieważ narzędzie otwiera nowe pliki, a system operacyjny przechowuje wpisy katalogu i inne metadane (takie jak dziennik systemu plików, jeśli używasz kronikowanie metadanych, takie jak ext3 / ext4 i NTFS, robi się domyślnie) podczas przesyłania. Proces kopiowania pliku „zacznie działać” tylko w przypadku większych obiektów, gdy odbywa się zwykłe przesyłanie zbiorcze.
źródło
Zdecydowanie chcesz wypróbować rclone . To jest szalone szybko:
$ tree / usr [...] katalogi 26105, pliki 293208
$ sudo rclone sync / usr / home / fred / temp -P -L --transfers 64
Przeniesiono: 17,929 G / 17,929 GB, 100%, 165,692 MB / s, ETA 0s Błędy: 75 (ponowna próba może pomóc) Czeki: 691078/691078, 100% Przeniesiono: 345539/345539, 100% Upłynął czas: 1m 50,8 s
Jest to lokalna kopia zi na dysk SSD LITEONIT LCS-256 (256 GB).
Możesz dodać --ignore-sumę kontrolną przy pierwszym uruchomieniu, aby była jeszcze szybsza.
źródło
Uniknąć
-z
--compress
Kompresja / : spowoduje obciążenie tylko procesora, ponieważ transfer nie odbywa się przez sieć, ale przez pamięć RAM.--append-verify
: wznowić przerwany transfer. To brzmi jak dobry pomysł, ale ma niebezpieczny przypadek awarii: każdy plik docelowy o tym samym rozmiarze (lub większym) niż źródło zostanie Zignorowany. Ponadto sumuje na koniec cały plik, co oznacza brak znaczącego przyspieszenia--no-whole-file
podczas dodawania niebezpiecznego przypadku awarii.Posługiwać się
-S
/--sparse
: zamienia sekwencje zer na rzadkie bloki--partial
lub-P
który jest--partial --progress
: zapisz częściowo przesłane pliki do przyszłego wznowienia. Uwaga: pliki nie będą miały nazwy tymczasowej, więc upewnij się, że nic innego nie oczekuje na użycie miejsca docelowego, dopóki cała kopia nie zostanie ukończona.--no-whole-file
więc wszystko, co musi zostać wysłane ponownie, wykorzystuje transfer delta. Odczytywanie połowy częściowo przesłanego pliku jest często znacznie szybsze niż ponowne zapisywanie.--inplace
aby uniknąć kopiowania plików (ale tylko wtedy, gdy nic nie czyta miejsca docelowego do czasu zakończenia całego transferu)źródło