@ pdo'nin cevabı iyidir, ancak bir arabellek ve iyi bir sıkıştırma ile hızı artırabilir ve bir ilerleme çubuğu ekleyebilir.
Genellikle ağ darboğazıdır ve hız zamanla değişir. Bu nedenle, verileri ağ üzerinden göndermeden önce arabelleğe almanıza yardımcı olur. Bu ile yapılabilir pv
.
Ek olarak, kişi genellikle uygun bir sıkıştırma algoritmasıyla hızı artırabilir. Gzip (yukarıda kullanıldığı gibi) hızlı bir sıkıştırma algoritmasıdır, ancak genel olarak zstandard ( zstd
) (ve yüksek sıkıştırma oranları için LZMA / LZMA2 ( xz
) daha iyi sıkıştıracak ve aynı zamanda daha hızlı olacaktır. Birden çok çekirdekli gzip kullanmak için pigz kullanılabilir.
İlerleme çubuğu, arabelleğe alma ve ağ üzerinde zstandard sıkıştırma ile veri gönderme örneği:
tar cf - . | pv -perabs $(du -sk . | cut -f 1)K | zstd -14 --long=31 -T0 | pv -qCB 512M | ssh user@host "cd /wherever && pv -qCB 512M | zstd -cd -T0 --long=31 | tar xf -"
Birincisi pv
, ilerlemeyi ( p ), tahmini süreyi ( e ), transfer hızını ( r ), ortalama hızı ( a ), toplam aktarılan baytları ( b ) göstermektir. Toplam boyutu ile tahmin edilir du
ve boyut seçeneğiyle (ilave ler ). İlerleme sıkıştırma ve tamponlamadan önce ölçülür, bu nedenle çok doğru değil, yine de yardımcı olur.
zstd
Sıkıştırma ayarında 14 kullanılır . Bu sayı ağa ve CPU hızına bağlı olarak azaltılabilir veya arttırılabilir, böylece zstd ağ hızından biraz daha hızlıdır. Bir Haswell 3.2 GHz'de dört çekirdekli CPU 14 , yaklaşık 120 MB / s hıza sahip. Örnekte, uzun mod 31 (2 GB'lık bir pencere kullanır, çok fazla RAM gerektirir, ancak örneğin veritabanı dökümlerini sıkıştırmak için çok iyi) kullanılır. T0 seçenekleri çekirdek sayısı parçacığı miktarını ayarlar. Uzun ayarlarla birlikte bu ayarların çok fazla bellek kullandığının bilinmesi gerekir.
Zstd ile ilgili bir sorun, çoğu işletim sisteminin>> 1.3.4 sürümüyle birlikte gönderilmemesidir. Bu sürüm uygun çok çekirdekli ve uzun destek için gereklidir. Mevcut değil ise, derlenebilir ve yüklü https://github.com/facebook/zstd sadece birlikte make -j4 && sudo make install
. Zstd yerine xz veya pigz de kullanılabilir. xz yavaştır, ancak çok iyi sıkıştırır (yavaş bağlantılara göre iyidir), pigz / gzip hızlıdır ancak çok iyi sıkıştırmaz.
pv
daha sonra tekrar kullanılır, fakat tamponlama için ( q
sessiz C
için, eksiz mod için [her zaman tamponlama için gerekli] ve B
tampon boyutunu ayarlamak için) kullanılır.
Örnekte, alıcı tarafında da bir tampon kullanılmıştır. Bu genellikle gereksizdir (çünkü sıkıştırma ve sabit disk yazma hızı çoğu zaman ağ hızından daha yüksektir), ancak genellikle de zarar vermez.