Mam duży obraz ISO, który jest obecnie pobierany przez klienta torrenta z włączoną rezerwacją miejsca: oznacza to, że rozmiar pliku się nie zmienia, a niektóre porcje w (4 Mib) ciągle się zmieniają z powodu pobierania.
Przy 90% pobierania robię początkową synchronizację, aby zaoszczędzić czas później:
$ rsync -Ph DVD.iso / media / another-hdd / wysyłanie przyrostowej listy plików DVD.iso 2,60G 100% 40,23 MB / s 0:01:01 (xfer # 1, do sprawdzenia = 0/1) wysłane 2,60G bajtów odebrane 73 bajty 34,59M bajtów / sek całkowity rozmiar to 2.60G przyspieszenie to 1.00
Następnie, gdy plik zostanie w pełni pobrany, ponownie synchronizuję:
total size is 2.60G speedup is 1.00
Przyspieszenie = 1 mówi, że transfer delta nie był używany, chociaż 90% pliku się nie zmieniło, katalog docelowy znajduje się na innym FS, a kopiowanie zajmuje kilka minut. Dlaczego nie próbuje przyspieszyć transferu ?! Jak mogę wymusić rsync
użycie transferu delta?
Odpowiedzi:
Według strony man , psusi ma rację:
źródło
-no-W
-no-W
nie działa tylko długa opcja-no-whole-file
. Powodem, dla którego potrzebuję tego przełącznika jest to, że konfiguruję kopię zapasową i mam duże pliki (np. Obrazy), które nie mają tego samego czasu modyfikacji. Jest DUŻO szybszy, przyspieszenie to 163,26, aby zsynchronizować te pliki przy użyciu transferu delta na moim lokalnym systemie plików.--no-whole-file
(proszę zwrócić uwagę na podwójne--
na początku).Prosta odpowiedź na to pytanie brzmi:
Użyj
--no-W
flagi, aby wymusić kompresję delta, niezależnie od tego, czy jest ona lokalna czy zdalna.Aktualizacja: Wygląda na to, że w tej historii jest coś więcej.
delta compression
Wydaje się być aktywna tylko między proces nadawania i odbierania rsync. Podczas wysyłania pliku do systemu plikówrsync
może nadal zapisywać cały plik (pliki), nawet przy włączonej kompresji delta.Zobacz dochodzenie „Wakan Tanki” tutaj .
źródło
--no-W
zawsze przesyłaj cały plik w moim przypadku. Proszę sprawdzić unix.stackexchange.com/questions/291156/…Domyślnie rsync najpierw tworzy nową kopię pliku docelowego, a następnie zastępuje ją z różnych powodów bezpieczeństwa. Możesz to zmienić, podając
--inplace
wraz z--no-whole-file
. To mówi rsync, aby dokonała edycji na miejscu pliku docelowego, akceptując różne ryzyka (zwykle niewielkie w tej sytuacji), jak udokumentowano na stronie man.źródło
Domyślnie
rsync
tworzy kopię pliku w miejscu docelowym, a następnie atomowo zastępuje oryginał nową kopią. Odbywa się to ze względów bezpieczeństwa. To, czego szukasz, to--inplace
opcja, która spowodujersync
modyfikację tylko tych części pliku docelowego, które zmieniły się względem źródła.W przypadku użycia PO zalecam również wyłączenie wstępnej alokacji, aby zsynchronizować rzadką kopię, która będzie znacznie szybsza. W przypadku pobierania nie martw się o fragmentację, chyba że używasz bardzo starego systemu plików, takiego jak VFAT. W szczególności pliki multimedialne nie są odczytywane przy maksymalnej wydajności nośników pamięci, więc ich defragmentacja to zmarnowany wysiłek.
Aby rzadko kopiować katalog pobierania do woluminu docelowego, polecam te flagi i operacje w następującej kolejności:
Pierwszy przebieg rzadko kopiuje nowe pliki do miejsca docelowego. Drugi przebieg aktualizuje istniejące pliki w miejscu, kopiując tylko zmiany
Ponieważ wykonuje rzadkie i lokalne kopie delta, możesz uruchamiać to wielokrotnie, nie ponosząc przy tym dużo dodatkowego IO. Nawet jeśli masz jednocześnie uruchomionych 20 torrentów, nie zwiększy to zapisu w miejscu docelowym ani nie zniszczy woluminów źródłowych / docelowych.
źródło