Yerel diskinize yazmak için tar kullanmak yerine, ssh kullanarak doğrudan uzaktaki sunucuya yazabilirsiniz.
server1$ tar -zc ./path | ssh server2 "cat > ~/file.tar.gz"
"Ssh" komutunuzu izleyen herhangi bir dize, etkileşimli oturum açma yerine uzak sunucuda çalıştırılacaktır. Bu uzak komutlara giriş / çıkışları SSH üzerinden yerelmiş gibi yönlendirebilirsiniz. Komutu tırnak işaretleri içine almak, özellikle yönlendirme kullanırken karışıklığı önler.
Veya tar dosyasını diğer sunucudan doğrudan çıkarabilirsiniz:
server1$ tar -zc ./path | ssh server2 "tar -zx -C /destination"
Nadiren kullanılan -C
seçeneği not alın. "Bir şey yapmadan önce bu dizine değiştir" demek.
Veya, hedef sunucudan "çekmek" isteyebilirsiniz:
server2$ tar -zx -C /destination < <(ssh server2 "tar -zc -C /srcdir ./path")
Not <(cmd)
yapı vurmayı yeni ve eski sistemler üzerinde çalışmaz. Bir programı çalıştırır ve çıktıyı bir boruya gönderir ve bu boruyu bir dosya gibi komutun yerine koyar.
Yukarıdakileri kolayca kolayca şöyle yazabilirdim:
server2$ tar -zx -C /destination -f <(ssh server2 "tar -zc -C /srcdir ./path")
Veya aşağıdaki gibi:
server2$ ssh server2 "tar -zc -C /srcdir ./path" | tar -zx -C /destination
Veya kendinize biraz keder kurtarabilir ve sadece rsync kullanabilirsiniz:
server1$ rsync -az ./path server2:/destination/
Son olarak, aktarımdan önce verileri sıkıştırmanın bant genişliğinizi azaltacağını unutmayın, ancak çok hızlı bir bağlantıda işlemin daha fazla zaman almasına neden olabilir . Bunun nedeni, bilgisayarınızın yetişmek için yeterince hızlı sıkıştırılamaması olabilir: 100 MB'lık sıkıştırmak 100 MB'lık göndermek daha uzun sürerse , sıkıştırılmamış göndermesi daha hızlı olur.
Alternatif olarak, sıkıştırma seviyesini belirtebilmeniz için (-z seçeneğini kullanmak yerine) kendinizi gzip ile borulamayı düşünebilirsiniz. Sıkıştırılabilir veriye sahip hızlı ağ bağlantılarında, seviye 2 veya 3'te gzip kullanarak (varsayılan 6'dır) çoğu durumda en iyi toplam verimi sağladığıma dair deneyimim oldu. Bunun gibi:
server1$ tar -c ./path | gzip -2 | ssh server2 "cat > ~/file.tar.gz"