Zawsze używam albo rsync
albo scp
, by skopiować plik z / na zdalny komputer. Ostatnio odkryłem w instrukcji scp
( man scp
) flagi-C
-C Compression enable. Passes the -C flag to
ssh(1) to enable compression.
Zanim odkryłem tę flagę, kiedyś zip
przed i potem scp
.
Czy tak samo efektywne jest używanie -C
niż rozpakowywanie i rozpakowywanie? Kiedy używasz jednego lub drugiego procesu, aby transfer był szybszy?
scp
compression
file-transfer
Remi.b
źródło
źródło
scp -rv
iscp -Crv
do porównywania przepustowości.zip
jest to format pliku bardzo „Windows”. Prawie nigdy go nie zobaczysz ani nie będziesz potrzebował, gdy będziesz obsługiwał maszynę z systemem Linux z rodzimym oprogramowaniem.tar
służy do zwijania katalogów w jednym pliku, przy zachowaniu uprawnień i nazwiska oraz takie, podczas gdygzip
,bzip2
,xz
itp są wykorzystywane do plików kompres.tar
s często są kompresowane, dzięki czemutar.gz
itar.xz
popularnych formatów archiwów w systemie Linux. Widziałem, jak ludzie toczą własnąscp
robotę za pomocą takich poleceńtar cvz directory | ssh machine 'cd somewhere; tar xz'
.Compression yes
swój.ssh/config
plik.Odpowiedzi:
Nigdy tak naprawdę nie zrobi to żadnej różnicy, ale skompresowanie pliku przed skopiowaniem powinno być nieco mniej wydajne, ponieważ użycie formatu kontenera, takiego jak
zip
który może zawierać wiele plików (jaktar
), jest niepotrzebne i nie można przesyłać strumieniowo zip wejście i wyjście (więc potrzebujesz pliku tymczasowego).gzip
Z drugiej strony używanie zamiastzip
powinno być dokładnie takie samo, ponieważ robi tossh -C
pod maską ... poza tym, że gzipowanie się to więcej pracy niż zwykłe używaniessh -C
.źródło
gzip
jest. Czy twoja odpowiedź oznacza, żescp -rC
jest to prawdopodobnie najbardziej wydajne rozwiązanie, jakie mam?-C
kompresuje strumień interaktywnego protokołu. Uwzględniasz tylko dane. Więc twoje wnioski są błędne. Zobacz moją odpowiedź-C
Flaga umożliwia kompresję gzip w strumieniu SSH.Jest to odpowiednik
Accept-Encoding: gzip
HTTP.Sposób działania flagi zależy od rodzaju przesyłanych danych:
Podczas przesyłania pojedynczego dużego pliku wydajność byłaby prawie taka sama, jak skompresowanie pliku przed przesłaniem (pomijając efektywność algorytmu zip vs. gzip).
Ale korzystanie z niego
-C
jest mniejszym wysiłkiem dla Ciebie jako użytkownika.Podczas przesyłania dużej liczby małych plików wydajność będzie gorsza niż w przypadku skompresowania plików przed przesłaniem.
Powodem tego jest to, że przed każdym przesyłaniem plików istnieje interaktywna komunikacja między serwerem SCP a klientem (w celu wymiany metadanych plików, takich jak sygnatura czasowa i uprawnienia). Tak więc obie strony muszą trochę poczekać na odpowiedź drugiej strony (kompresja nie pomoże podczas oczekiwania). To zmarnowany czas na każdy przesłany plik. Ile czasu marnuje się, zależy od opóźnienia połączenia. Ostatecznie transfer może być wolniejszy.
Po przesłaniu pojedynczego skompresowanego pliku komunikacja odbywa się tylko raz.
źródło
Umożliwia kompresję gzip w ssh (pod scp).
Przy powolnych połączeniach przyspieszy to, a przy każdym stosunkowo szybkim połączeniu (100 Mb lub szybszym) kompresja najprawdopodobniej spowolni.
Będzie mniej lub bardziej wydajny niż zip w zależności od tego, czy gzip (konkretnie gzip -6) byłby mniej lub bardziej wydajny niż wybrany poziom kompresji zip
źródło
.bin
i.txt
plików). Sugerowałbyś więc użyciescp -r
i bez-C
flagi i niezip
,gzip
nietar
?