Nie możesz „gzipować całej rzeczy”, ponieważ gzip kompresuje tylko jeden plik, możesz utworzyć plik tar i gzipować go do „gzip całej rzeczy”, ale stracisz możliwość rsync kopiowania tylko zmodyfikowanego pliku.
Więc pytanie brzmi: czy lepiej jest przechowywać plik, muszę wykonać rsync gziped, czy polegać na opcji -z rsync.
Odpowiedź brzmi prawdopodobnie, że nie chcesz rozpakować pliku na swoim serwerze? Myślę, że tak, więc nie widzę, jak można zrobić plik gzip przed wykonaniem rsync.
Być może nie potrzebujesz funkcji rsync do kopiowania tylko zmodyfikowanego pliku? W takim przypadku dlaczego używać rsync zamiast robienia pliku SCP pliku tar.gz zawierającego twoje rzeczy?
W każdym razie, aby odpowiedzieć na pytanie, rsync gzip będzie nieco mniej wydajny niż plik gziping z gzip. Dlaczego ? ponieważ rsync będzie gzip porcjami danych po porcji, więc do utworzenia tabeli używanej przez gzip do kompresji użyty zostanie mniejszy zestaw danych, większy zestaw danych (gzip użyłby całego pliku naraz) daje lepszą tabelę kompresji. Ale różnica będzie w większości przypadków bardzo bardzo mała, ale w bardzo rzadkich przypadkach różnica może być ważniejsza (jeśli masz bardzo duży plik z bardzo długim powtarzaniem wiele razy w pliku, ale daleko od siebie) (To jest bardzo uproszczony przykład)
Jeśli kopiujesz dane tylko raz, rsync sam w sobie nie będzie wielką wygraną. Jeśli lubisz gzip (lub tar + gzip, ponieważ masz wiele plików), możesz spróbować czegoś takiego:
Spowoduje to uzyskanie poszukiwanej kompresji i po prostu skopiowanie bezpośrednio, bez udziału rsync.
źródło
@radius, drobna nitka do wyboru o tym, jak
gzip
działa -gzip
jest algorytmem kompresji opartym na blokach i dość prostym. Cały plik nie jest uwzględniany w tabeli kompresji - tylko każdy blok. Inne algorytmy mogą wykorzystywać całą zawartość pliku, a niektóre wykorzystują zawartość wielu bloków lub nawet bloków o różnych rozmiarach. Jednym z fascynujących przykładów jestlrzip
ten sam autor corsync
!Chudy na
gzip
Algorytm .Podsumowując, użycie
rsync -z
prawdopodobnie da to samo kompresję jakgzip
ing - a jeśli wykonujesz transfer różnicowy, lepiej ze względu narsync
algorytm różnicowania.To powiedziawszy, myślę, że okaże się, że regularnie
scp
bije się ręczniersync
dla transferów nieróżnicowych - ponieważ będą miały znacznie mniej narzutu niżrsync
algorytm (który i tak użyłbyscp
pod maską!)Jeśli twoja sieć ma stać się wąskim gardłem, wtedy chcesz używać kompresji na drucie.
Jeśli twoje dyski są wąskim gardłem, najlepiej byłoby przesyłać strumieniowo do skompresowanego pliku. (na przykład,
netcat
z jednego komputera na drugi, przesyłanie strumieniowe dogzip -c
)Zwykle, jeśli kluczem jest szybkość, kompresowanie istniejącego pliku jest marnotrawstwem.
TIMTOWTDI, YMMV, IANAL itp.
źródło
Według tego faceta korzystanie z niego może być po prostu szybsze
rsync -z
, ale sądzę, że byłoby to tak wydajne jak kompresja każdego pliku przed przesłaniem. Powinno to być szybsze niż kompresowanie strumienia smoły, jak sugerują inni.Ze strony podręcznika:
źródło
Ponieważ zarówno scp skompresowanego pliku, jak i rsync zajmie bardzo podobny czas przesyłania, „najbardziej efektywnym sposobem na to” byłaby kompresja w locie zamiast kompresji, przesyłania.
Oprócz „szybkości” inne kwestie obejmują:
rsync można łatwo zrestartować, jeśli nie wszystkie pliki zostaną przeniesione.
rsync może być używany do utrzymywania plików na zdalnym komputerze.
lokalna tar lub gzip wymaga lokalnej przestrzeni.
Uwagi dotyczące użycia portu zarówno dla maszyny docelowej, jak i zapór ogniowych: 1) scp używa portu 22 (domyślnie), co może być nie do przyjęcia. 2) rsync users port 873 (domyślnie)
Nie jestem pewien, dlaczego promień oczekuje, że oryginalny plakat NIE chce przechowywać rozpakowanych plików.
źródło