Saya bersenang-senang mencari solusi untuk masalah ini. Ini membutuhkan alat nc (netcat) di kedua mesin, dan SSH (SFTP tidak diperlukan).
Dalam contoh ini, saya akan memanggil mesin yang memiliki data yang perlu didukung linux-a, dan mesin yang perlu menerima cadangan linux-b.
Di linux-a, minta netcat mendengarkan di port (saya ambil 2000) dan mengarahkannya ke file. Ini hanya akan duduk di sana dan menunggu sampai sesuatu terjadi pada port itu.
[kenny@linux-b /var/backups]$ nc -l 2000 > backup.tgz
Di linux-b, buka terowongan ssh ke linux-a, saya menggunakan port 2000 lagi. Ini akan mengarahkan ulang apapun yang Anda lemparkan ke TCP port 2000 di localhost ke TCP port 2000 di linux-a, tempat netcat mendengarkan.
[kenny@linux-a /var/data]$ ssh -L 2000:localhost:2000 -CfN linux-b
Sekarang buat arsip tar, tetapi kirim output ke stdout (using -) dan pipa ke gzip untuk beberapa kompresi. Sekarang pipa itu ke netcat lain yang mengirimkannya ke localhost pada TCP pada port 2000.
[kenny@linux-a /var/data]$ tar cf - important-data | gzip -fc | nc localhost 2000
Dilakukan! Di linux-b, netcat tidak lagi mendengarkan, dan file baru dibuat. Bagian terbaiknya adalah arsip tar tidak pernah ditempatkan pada hard disk linux-a.
[kenny@linux-b /var/backups]$ file backup.tgz
backup.tgz: gzip compressed data, from Unix, last modified: Thu Jul 5 13:48:03 2012
Saya tahu itu tidak persis apa yang Anda minta dalam pertanyaan, tetapi jika Anda memiliki netcat tersedia, itu solusi yang layak untuk jenis masalah Anda.
Sunting: Saya lupa satu hal: jika Anda mengikuti petunjuk ini, Anda masih akan memiliki terowongan SSH yang beredar di linux-a. Cari tahu apa ID proses itu dan bunuh.
[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