Ara ana bilgisayar üzerinden Rsync dosyaları


22

Şu anda LAN'ımdan uzaktayım ve dizüstü bilgisayarımı yedeklemem gerekiyor. Sunucumda dizüstü bilgisayarımın yakın zamanda bir kopyası var ve genellikle dizüstü bilgisayar rsync kullanarak yedekleniyor. Şimdi bunu yapmak istiyorum, ama LAN'ımın dışında.

Kısacası A'dan C'ye B aracılığıyla veri göndermek istiyorum, burada A dizüstü bilgisayarım, B yönlendiricim ve C sunucum.

Bu komutu buldum:, A$ scp -oProxyCommand="ssh B nc %h %p" thefile C:destinationscp ile dosya aktarımı için iyi çalışıyor - ama zaten sunucumdaki verilerin çoğuna sahip olduğumdan sadece deltayı senkronize etmek için rsync kullanmak istiyorum.

Ben denedim:, A$ rsync file -e 'ssh B ssh' Cve bu kadar kullanıcı için parola vermek istendiğinde çalışır: C. Ancak, şifreyi girdiğimde hiçbir şey olmuyor. Yönlendirici Tomato v1.28 çalıştırıyor ve ssh yapılandırma dosyasını kullanmak için parola olmadan oturum açmasını sağlayacak şekilde ayarlayamıyorum.

Bu işin nasıl yapılacağına dair bir fikrin var mı?


2
ProxyCommandyapılandırma dosyasında da aynısını kullanın . Rsync bunu almalı.
Jakuje

Yanıtlar:


31

Bu soru aslında scp ve rsync için de dahil olmak üzere başka bir yerde cevaplanmaktadır . İkincisi cevabımı içerdiğinden, ancak hiçbir cevap kabul edilmediğinden, burada tekrarlayacağım.

Belirttiğiniz gibi, rsync's -e | --rshseçeneğini kullanabilirsiniz , ancak biraz daha karmaşık olacak:

rsync -azv -e 'ssh -o "ProxyCommand ssh -A PROXYHOST -W %h:%p"' foo/ dest:./foo/

Veya sürümünüz sshyeterince yeniyse (OpenSSH> = v7.3), -J( ProxyJump) seçeneğini kullanabilirsiniz

rsync -azv -e 'ssh -A -J USER@PROXYHOST:PORT' foo/ dest:./foo/

Ben kullanıyorum o Not -Aelbette, yerine geçebilir, (ajan yönlendirme) ama aynı zamanda şifre doğrulaması ile iş anahtarları kullanmayın gerekiyorsa ve proxybirlikte Bve destbirlikte Csizin örnekte.

Şans eseri yeterince yeni bir sshsürüme sahip değilseniz (> = 5.3, IIRC), aşağıdakileri yapmak için seçenek netcatyerine kullanabilirsiniz :-Wssh

rsync -azv -e 'ssh -o "ProxyCommand ssh -A PROXYHOST nc %h %p"' foo/ dest:./foo/

Son olarak, zaten yorumlarda belirtildiği gibi ProxyCommand, $HOME/.ssh/configdosyanıza koyabilirsiniz, böylece böyle karmaşık bir komut satırına sahip olmanız gerekmez. Özellikle, böyle bir şey ekleyin:

Host C
  ProxyCommand ssh -A PROXYHOST -p 22 -W %h:%p

Veya ProxyJumpOpenSSH için kullanmak = = v 7.3:

Host C
  ProxyJump PROXYHOST

O zaman yapmanız gerekenler:

rsync -azv foo/ C:./foo/
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.