-C` bayrağı scp`de tam olarak ne yapar?


35

Dosyayı uzaktaki bir makineye kopyalamak için daima rsyncveya ikisini kullanırım scp. Son zamanlarda, bayrak scp( man scp) kılavuzunda keşfettim-C

 -C      Compression enable.  Passes the -C flag to
         ssh(1) to enable compression.

Bu bayrağı keşfetmeden önce, zipönce ve sonra kullanırdım scp.

-CSıkıştırma ve açma işleminden ziyade sadece kullanmak kadar etkili midir? Bir veya başka bir işlem kullanıldığında aktarımı daha hızlı hale getirir mi?


2
Düşündüğüm en iyi yol, kendin tarafından ölçüt. Verimi karşılaştırmak için scp -rvve scp -Crvdüğmelerini kullanın.
cuonglm

3
Bu soru ile tamamen alakasız, ancak zipçok "windows" şeklinde bir dosya formatı. Yerel linux yazılımıyla bir linux makinesi kullanırken neredeyse hiç görmeyecek veya ihtiyacınız olmayacak. tarederken, izinler ve isim ve böyle korurken bir dosya içine dizinleri yuvarlayarak için kullanılan gzip, bzip2, xzvb kompres dosyalar için kullanılır. tars genellikle linux'taki arşivler için sıkıştırılmış, yapım tar.gzve tar.xzortak biçimlerdir. İnsanların kendi çalışma scpbiçimlerini gibi komutlarla yuvarladıklarını gördüm tar cvz directory | ssh machine 'cd somewhere; tar xz'.
Score_Under

2
@Score_Under - Zip formatı Java tarafından .jar dosyalarını paketlemek için de kullanılır, bu yüzden zip hala birçok Linux sunucusunda yaygın olarak kullanılmaktadır.
Johnny,

Bunun yerine her dosya transferi seçeneği kullanmak yerine, koyabilirsiniz Compression yessizin de .ssh/configdosyaya.
Barmar

Eğer gerçekten hız istiyorsanız, SSH'den
rogerdpack

Yanıtlar:


22

Asla büyük bir fark yaratmayacak, ancak dosyayı kopyalamadan önce sıkıştırmak biraz daha az verimli olmalı, çünkü zipbirden fazla dosyayı kapatabilecek bir kap formatı kullanmak targereksizdir ve zip akışı mümkün değildir giriş ve çıkış (geçici bir dosyaya ihtiyacınız var).

Kullanılması gzipyerine, diğer taraftan zipne bundan beri tam olarak aynı olması gerektiğini ssh -Csadece kullanmaktan daha kendinizi edilir Gzip Sıkıştırma fazla çalışmak dışında ... kaputun altında yapar ssh -C.


Tamam, ne gzipolduğunu kontrol edeceğim . Cevabınız scp -rC, muhtemelen sahip olduğum en etkili çözüm olduğu anlamına mı geliyor ?
Remi.b

1
Cevabınız -Cetkileşimli bir protokol akışını sıkıştırdığını düşünmüyor . Sadece verileri göz önünde bulunduruyorsun. Yani sonuçların yanlış. Cevabımı
Martin Prikryl

@Celada Zip, üye dizini sonuna yerleştirildiği için bir boru hattına yazabilir. Ancak, dediğiniz gibi, sıkıştırmayı açmak, birden fazla üye çıkarmayı gerektirir ve bu nedenle bir boru hattından okuyamaz.
jrw32982,

20

-CBayrak SSH akımının bir gzipli sıkıştırma sağlar.

HTTP’de eşdeğerdir Accept-Encoding: gzip.

Bayrak nasıl performans gösterir aktardığınız bir veri türüne bağlıdır:

  • Tek bir büyük dosyayı aktarırken, performans aktarımdan önce dosyayı sıkıştırmakla aynı olacaktır (zip ve gzip algoritmasının verimini göz ardı etmek).

    Fakat -Ckullanıcı olarak sizin için daha az çaba harcarsınız.

  • Çok sayıda küçük dosyayı aktarırken, performans dosyaları aktarmadan önce sıkıştırmaktan daha düşük olacaktır.

    Bunun bir nedeni, her dosya aktarımından önce, SCP sunucusu ile istemci arasında etkileşimli bir iletişim bulunmasıdır (dosya meta verileri, zaman damgası ve izinler gibi). Bu yüzden her iki taraf da diğer tarafın yanıt vermesi için biraz beklemek zorundadır (sıkıştırma beklerken yardımcı olmaz). Aktarılan her dosya için boşa harcanan bir zaman. Ne kadar zaman harcanır bağlantının gecikmesine bağlıdır. Sonunda, transfer daha yavaş olabilir.

    Tek bir sıkıştırılmış dosyayı aktardığınızda, bu iletişim yalnızca bir kez gerçekleşir.


8

Sz'de gzip sıkıştırmasını sağlar (scp'nin altında).

On yavaş bağlantılarda bu sıkıştırma aşağı yavaş şeyler büyük olasılıkla herhangi bir makul hızlı bağlantıda (100Mbit veya daha hızlı), işleri hızlandırmak olacaktır.

Gzip (özellikle gzip -6) seçtiğiniz zip sıkıştırma düzeyinden daha az mı yoksa verimli mi olacağına bağlı olarak zip'den daha az verimli olur


1
Özel bir durumda, nispeten iyi bir bağlantım var (kampüsteyim) ancak kopyalamam gereken klasörler çok büyük (442'nin üzerinde 100GB .binve .txtdosyalar). Yani sadece bayrak kullanıp kullanmamayı scp -r, hayır kullanmamayı önerebilirsin , değil mi? -Czipgziptar
Remi.b

2
@ Remi.b: Muhtemelen, hem yol hem de görmek için kıyaslama yapmak zorundasınız. Asıl soru, CPU'nun verileri ağ üzerinden sıkıştırılmadan gönderilenden daha hızlı bir şekilde sıkıştıracak kadar hızlı olup olmadığıdır. Bu nedenle cevap, kendi makine ve ağınıza bağlı olacaktır.
Nate Eldredge,

Tamam, + 1 puanını aldım. Yardımınız için teşekkürler
Remi.b 28:15

SSH'nin farkına vardığım bazı CPU'ları alıyor gibi gözüküyor, bazen bant genişliğinizin çok altında max. Orada ne yapacağımdan emin değilim ...
rogerdpack 29:18

Performans verilere de bağlıdır. Temelde tüm sıfır olan bir dosyayı kopyalamak yüksek oranda sıkıştırılır. İki uzak sunucu arasında 500Mb'lik bir bağlantıya sahibim ve bu bağlantı üzerindeki tüm sıfırları ~ 128-130MB / s'de (muhtemelen bazı scp sıkıştırma tamponu limiti) içeren yaklaşık 507'lik bir dosyayı kopyaladım. Sıkıştırma olmadan bu 1:45 saat sürecek. Kilometreniz verilerin karmaşıklığına ve ne kadar iyi sıkıştırılabileceğine bağlı olarak değişecektir.
Topher
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.