Program konsol serial¹ yang akan Anda gunakan di ujung koneksi yang lain akan memiliki beberapa cara untuk mengirim file ke sisi jarak jauh. Bagaimana tepatnya Anda melakukannya tergantung pada sumber daya apa yang Anda miliki pada sistem jarak jauh.
Saya Memiliki lrzsz
atau kermit
di Sisi Remote
Kasus termudah adalah jika Anda memiliki program transfer file biner padat yang diinstal di sisi jarak jauh seperti lrzsz
atau kermit
. Ini dulunya lebih umum daripada hari ini, tetapi sistem khusus Anda mungkin masih memiliki salah satunya.
Program konsol serial yang Anda gunakan di sisi lokal hampir pasti memiliki cara untuk melakukan unggahan Zmodem atau Kermit, yang memungkinkan Anda mengirim apa pun yang Anda butuhkan secara langsung.
Dalam kasus Zmodem, ketikkan saja rz
pada sistem jarak jauh, yang mengirimkan string khusus yang harus dipahami terminal serial lokal, yang menyebabkannya memunculkan dialog pemilih file.
Kermit adalah protokol yang lebih sederhana, jadi Anda harus memulai transfer secara manual dalam kasus itu.
Saya Tidak Memiliki Program Transfer File Biner, tetapi Saya Memiliki uuencode
/base64
Ada beberapa keuntungan menggunakan program transfer file biner yang tepat seperti lrzsz
atau kermit
: efisiensi, checksumming, coba ulang otomatis, kembalinya transfer yang dibatalkan, transfer file multipel, dll., Tetapi ini adalah kemewahan . Jika Anda hanya perlu mengirim satu file, atau jarang mengirim file, Anda dapat menghapus unggahan ASCII.
Karena protokol terminal menafsirkan banyak nilai byte yang terjadi dalam file data biner, Anda tidak dapat mengirim file secara langsung melalui koneksi yang sama; jika Anda melakukannya, kode emulasi terminal di kedua ujung akan mencoba untuk menafsirkan beberapa data, merusak data dan kemungkinan membingungkan kode penanganan terminal juga.
Anda menyiasatinya dengan menyandikan data biner ke dalam subset ASCII yang aman di sisi lokal, lalu mengubahnya kembali menjadi data biner mentah di sisi jarak jauh. Inilah yang uuencode
dan base64
program lakukan, hanya berbeda dalam pilihan algoritma kecil.
Pada sistem lokal, Anda menyandikan file: ²
$ uuencode -o sbf.uue some-binary-file.gz some-binary-file.gz
Kemudian Anda mengetik perintah ini pada sistem jarak jauh, dan mengirim file menggunakan fitur "ASCII upload" konsol serial:
$ cat | uudecode
Ketika unggahan file selesai, tekan Ctrl-Cuntuk keluar cat
. Sekarang Anda memiliki file yang sudah diterjemahkan pada sistem remote, seperti yang Anda inginkan.
Tetapi saya memiliki banyak file untuk dikirim, dan Transcoding ASCII yang dapat dicetak sangat merepotkan!
Tidak sulit untuk melakukan bootstrap sendiri ke tingkat teknologi yang lebih tinggi. Jika sistem jarak jauh memiliki kompiler C, Anda dapat menggunakan teknik sebelumnya untuk mengirim salinan lrzsz
kode sumber sistem jarak jauh . Di sisi lokal:
$ uuencode -o lrzsz.tgz.uue lrzsz-0.12.20.tar.gz lrzsz-0.12.20.tar.gz
Kemudian pada sistem jarak jauh, ketikkan ini melalui program konsol serial:
$ cat | uudecode
^C
$ tar xvf lrzsz-0.12.20.tar.gz
...build lrzsz normally
Setelah Anda memulai perintah pertama, lakukan "unggahan ASCII" dari lrzsz.tgz.uue
file ke sistem jarak jauh. Pipeline menerima data yang uuencoded dan mendekodekannya menjadi tarball biner untuk Anda, yang dapat Anda ekstrak dan bangun.
Tapi saya tidak punya C Compiler di Remote System
Jika Anda bahkan tidak memiliki kompiler pada sistem jarak jauh, Anda dapat melakukan kompilasi silang program rz
(atau apa pun) pada sistem lokal dan mengirimkannya ke sistem jarak jauh menggunakan teknik di atas.
Catatan kaki:
minicom , picocom , Putty , VanDyke CRT ...
Anda harus memberikan nama file input ke versi ini uuencode
dua kali, satu kali untuk memberi nama sumber data input, dan sekali lagi untuk menyatakan apa yang sistem panggilan jarak jauh harus memanggil file ketika itu menerjemahkan data ke file output. Anda mungkin ingin sistem jarak jauh memiliki nama yang berbeda untuk file outputnya.
Versi lokal Anda uuencode
mungkin berperilaku berbeda.