Saya memiliki kotak Linux di tempat kerja yang sering saya masuki dari rumah. Kotak Linux ada di jaringan internal, tapi ada kotak yang merentang kedua jaringan, jadi saya bisa masuk seperti ini:
ssh -tA username@bridge.work.com ssh username@10.10.10.130
Saya memiliki beberapa file yang duduk di ~ / tmp yang ingin saya salin ke mesin lokal saya. (sebut saja mereka ~ / tmp / file1 ~ / tmp / file2 dan ~ / tmp / file3 demi argumen)
Saya telah melihat sesuatu seperti pekerjaan ini:
ssh -tA username@bridge.work.com ssh username@10.10.10.130 'tar cf - ~/tmp/file*' | tar xf -
Ini akan tar file pada mesin jarak jauh, mengirim hasilnya ke stdout, lalu pipa hasilnya ke tar lokal, yang sedang membongkar data pada stdin lokal.
Tidak bekerja:
Pada mesin jarak jauh, jika saya jalankan
tar cf - tmp/file* | md5sum
f1b776364c10dfc20500f228399a7c63 -
Dari mesin lokal:
ssh -tA username@bridge.work.com ssh username@10.10.10.130 'tar cf - ~/tmp/file*' | md5sum
bc7436c9771ee2b4978ffd29b8b7ed36 -
Saya berasumsi bahwa ini mungkin byte pemesanan snafu di seluruh jaringan ... Saya akhirnya bisa mengatasinya dengan uuencoding file, catting di jaringan kemudian uudecoding secara lokal ... untuk beberapa alasan saya tidak bisa dapatkan sintaks yang benar untuk dapat tar | uuencode di sisi jarak jauh dan uudecode | untar di sisi lokal.
Saya mencari cara yang baik untuk melakukan ini semua dalam satu langkah; lebih disukai sesuatu yang bisa saya bungkus dengan fungsi shell.