Bu soruna bir çözüm bulmak çok eğlendim. Her iki makinede de nc (netcat) aracını ve SSH'yi (SFTP gerekli değildir) gerektirir.
Bu örnekte, linux-a'yı yedeklemesi gereken verilere sahip makineyi ve linux-b yedeklemesini alması gereken makineyi arayacağım.
Linux-a'da, netcat'in bir portu dinlemesini sağladım (2000'i aldım) ve bir dosyaya yönlendirin. Bu sadece orada oturup o limanda bir şey gelene kadar bekler.
[kenny@linux-b /var/backups]$ nc -l 2000 > backup.tgz
Linux-b'de linux-a'ya bir ssh tüneli açın, 2000 numaralı bağlantı noktasını tekrar kullandım. Bu, localhost üzerindeki TCP bağlantı noktası 2000'de, netcat'in dinlediği linux-a üzerindeki TCP bağlantı noktası 2000'e attığınız her şeyi yeniden yönlendirir.
[kenny@linux-a /var/data]$ ssh -L 2000:localhost:2000 -CfN linux-b
Şimdi katran arşivini oluşturun, ancak çıktıyı stdout'a gönderin (- kullanarak) ve biraz sıkıştırma için gzip'e ekleyin. Şimdi bunu 2000 numaralı bağlantı noktasında TCP'deki localhost'a gönderen başka bir netcat'e bağlayın.
[kenny@linux-a /var/data]$ tar cf - important-data | gzip -fc | nc localhost 2000
Yapılmıştı! Linux-b'de netcat artık dinlemiyor ve yeni bir dosya oluşturuluyor. En iyi bölüm, katran arşivinin asla linux-a'nın sabit diskine yerleştirilmemesidir.
[kenny@linux-b /var/backups]$ file backup.tgz
backup.tgz: gzip compressed data, from Unix, last modified: Thu Jul 5 13:48:03 2012
Sorunda tam olarak istediğin şey olmadığını biliyorum, ancak netcat'iniz varsa, sorun türünüze uygun bir çözüm.
Düzenleme: Bir şeyi unuttum: Bu talimatları izlerseniz, hala linux-a üzerinde yüzen bir SSH tüneli olacak. İşlem kimliğinin ne olduğunu öğrenin ve öldürün.
[kenny@linux-a /var/data]$ ps -ef | grep "ssh -L"
kenny 5741 1 0 13:40 ? 00:00:00 ssh -L 2000:localhost:2000 -CfN linux-b
kenny 5940 3360 0 14:13 pts/1 00:00:00 grep --color=auto ssh -L
[kenny@linux-a /var/data]$ kill 5741