Saya punya mesin beberapa hop jauhnya, dan saya perlu mengatur port forwarding untuk mentransfer file.
Sunting: Agar jelas, beberapa hop diperlukan untuk mengakses mesin jarak jauh. Dari mesin saya, saya mengatur VPN, tempat saya dapat mengakses 10.255.xx - itu adalah satu-satunya mesin yang dapat saya sambungkan melalui VPN. Setelah masuk ke .xx, saya kemudian dapat terhubung ke komputer lain - .Yy menjadi salah satu dari mereka.
Dari mesin saya:
ssh -L 4567:localhost:4567 [email protected]
Kemudian dari mesin itu:
ssh -L 4567:localhost:22 [email protected]
Saya kemudian bisa
scp -P 4567 me@localhost:/path/to/large/file.gz .
Saya meninggalkan overnite berjalan ini, hanya untuk menemukan bahwa transfer mati di beberapa titik.
Saya telah melihat beberapa saran untuk menggunakan rsync di atas ssh untuk melanjutkan transfer, tetapi saya tidak jelas cara mengaturnya. Apakah ini mungkin?
sumber
scp [email protected]:/path/to/large/file.gz .
mencapai hal yang persis sama? Versi scp (ssh) mana yang diinstal pada klien dan server?Jawaban:
Dengan beberapa versi scp (versi di komputer sumber tampaknya menjadi kunci), hanya menjalankan kembali perintah scp akan cukup untuk melanjutkan transfer. Tetapi berhati-hatilah! Jika versi Anda tidak mendukung transfer parsial, sebagian file hanya akan ditimpa.
Switch rsync berikut berguna untuk melanjutkan transfer yang rusak jika scp tidak mendukungnya:
Perintah
harus memiliki efek yang diinginkan. Perhatikan bahwa
-p
saklar harus huruf kecil untuk ssh.sumber
10.255.y.y
adalah komputer klien.Gunakan sftp bukan scp
Dalam kasus Anda:
Dari halaman manual sftp:
sumber
rsync menggunakan ssh secara default, Anda mungkin harus menentukan perintah ssh yang tepat menggunakan rsync's -e switch. Ini juga memiliki --partial yang harus menyimpan file yang tidak lengkap sehingga dapat melanjutkan transfer.
sumber
Saya benar-benar tidak bisa melihat apa gunanya terowongan Anda, jadi inilah cara saya akan menyelesaikan masalah Anda:
ini membuka terowongan terbalik dari mesin lokal (localhost) ke mesin jarak jauh (remotehost). $ tunnelPort adalah port tempat tunnel ditemukan di remotehost. $ localSSHPort adalah port tempat sshd lokal berjalan dan $ remoteSSHPort adalah tempat sshd remotehost mendengarkan.
Sekarang Anda berada di dalam terowongan (mundur!), Anda bisa melakukan apa yang Dennis sarankan:
flag -a dan -z dijelaskan di halaman manual rsync, jadi saya tidak akan menguraikannya. Apa yang terjadi sekarang adalah ketika Anda menjalankan rsync pada remotehost seperti di atas, ia mendorong semua data ke port $ tunnelPort yang kemudian diteruskan ke sshd $ localSSHPort localhost Anda.
Harapan itu membantu.
sumber