Saya memiliki serangkaian file perangkat lunak yang diunduh ke subdirektori ~/Downloads
di komputer pribadi saya. Saya juga menggunakan bash untuk menghubungkan dari jarak jauh ke komputer menggunakan ssh
.
Apakah mungkin mentransfer file ini ssh
ke komputer jarak jauh?
this file
) dan beberapa file (a series of software files
), solusi terbaik tergantung pada apakah Anda memiliki satu file atau beberapa file.Jawaban:
Anda mungkin ingin menggunakan
scp
untuk tujuan ini. Ini adalah cara aman untuk mentransfer file menggunakan protokol SSH.Misalnya, untuk menyalin file yang dinamai
yourfile.txt
dari~/Downloads
ke komputer jarak jauh, gunakan:Anda dapat melihat lebih banyak contoh di sini .
sumber
rsync
mungkin bekerja juga, sekarang saya memikirkannyascp
atas denganrsync
dan itu akan berfungsi dengan baik.rsync
untuk semuanya, bahkan file tunggal, karena "hanya berfungsi" dalam kasus-kasus sederhana dan bisa jauh lebih efisien dalam kasus lain. Jika menggunakan salah satuscp
ataursync
pada sesuatu yang belum dikompresi dan / atau dienkripsi, ingatlah untuk mengaktifkan opsi kompresi pada (-C
untukscp
,-z
atau--compress
untukrsync
). Sebenarnya saya menyalakannya dengan kebiasaan - sangat jarang Anda akan menemukan keadaan di mana ia memperlambat segalanya (mungkin jika Anda menggunakan perangkat berdaya rendah lambat dengan daya CPI terbatas seperti rPi).Meskipun
scp
jelas alat yang tepat untuk ini, jika karena alasan tertentu Anda tidak dapat menggunakannya Anda dapat melakukan sesuatu seperti berikut dari mesin lokal Anda untuk menyalin, katakanlah, struktur direktori ke mesin jarak jauh:Ini akan
tar
menjadi direktori saat ini pada mesin lokal, dan menulisnyatar
untukstdout
yang kemudian akan disalurkan kessh
perintah di mana ia akan menjalankan perintah remote untuk untar file dibaca daristdin
Diedit untuk mencerminkan komentar Dietrich Epp tentang
-f -
menjadi default pada kedua ciptaan dan ekstraksi, jadi tidak perlu untuk menentukan secara eksplisit.sumber
-C basedir
argumentar
untuk mengekstrak di tempat lain selain direktori home Anda jika Anda melakukan ini.Jika Anda ingin melakukan ini pada lebih dari kesempatan yang jarang, saya sarankan memasang sistem file jarak jauh dengan
sshfs
jika Anda menggunakan Unix-like yang mendukung FUSE (Linux, * BSD, Mac OS X). Buat direktori di bawah direktori home Anda, katakanlah, bernama ~ / remote-server:Kemudian pasang sistem file jarak jauh dengan
sshfs
. Ganti "yourserver.com" dengan nama host mesin jarak jauh Anda, dan "nama direktori jarak jauh" dengan direktori yang Anda gunakan pada sistem jarak jauh.Setelah ini selesai, direktori jarak jauh adalah bagian dari sistem file Anda dan Anda dapat menggunakan semua alat normal di dalamnya, termasuk
cp
:Jika Anda belum
sshfs
menginstal, Anda harus dapat menginstalnya di komputer menggunakan manajer paket Anda (lihat paket yang diberi namasshfs
ataufuse-sshfs
). Untuk informasi lebih lanjut, Anda dapat membaca tutorial online .Omong-omong, ini adalah cara favorit saya mengelola file di server jauh. Saya biasanya menyimpan satu server produksi dan dua server pengembangan yang terpasang dengan cara ini dan menggunakan alur kerja penelusuran file normal saya dengannya.
sumber
-o idmap={none,user,file},gid=<remote_user_group_ID>,allow_other
dan-C
untuk kompresi jika bandwidth buruk. Segera setelah itu berfungsi dengan baik, saya pribadi menambahkan alias untuk perintah untuk dengan cepat me-mount sistem file yang jauh di atas ssh. @Benjamin_Staton Saya tidak akan menggunakan sudo atau root di sini, setidaknya tanpa pemetaan pengguna / grup yang tepat.Pertama kali, tidak ada perbedaan nyata antara
scp
(salinssh
) danrsync
.Berjalan selanjutnya akan mendapat manfaat dengan rsync tidak menyalin file yang sudah ada.
-a
untuk semua file-v
untuk verbose-H
untuk "cari tahu symlink dan lakukan hal yang benar"Bendera berguna lainnya termasuk:
--delete
untuk menghapus file di tujuan yang tidak lagi ada pada sumbernya.--dry-run
untuk pengujian - sangat berguna saat dikombinasikan dengan--delete
.Ini akan menggunakan
ssh
kunci untuk melakukan login tanpa kata sandi juga, jika Anda sudah mengaturnya.Di akhir proses,
rsync
akan memberi tahu Anda berapa kali lebih cepat dari selesai menyalin lagi.sumber
-H
sebenarnya untuk tautan keras, ini menghentikan konten yang sama yang dikirim dua kali atau lebih ketika dihubungkan ke lebih dari satu tempat di struktur direktori sumber (tetapi dapat membuat prosesnya kurang efisien untuk struktur direktori besar). itu tidak berpengaruh pada tautan simbolik, tetapi beberapa opsi yang disertakan oleh-a
/--archive
memang memengaruhi cara symlinks diproses.Untuk menambah jawaban di atas. Kadang-kadang saya tidak begitu yakin tentang jalur jarak jauh. Dalam kasus ini saya gunakan
sftp
untuk pertama menavigasi ke lokasi yang diperlukan, kemudian menggunakan get atau put untuk benar-benar mengunduh atau mengunggah file.Jika Anda juga ingin menyimpan sesuatu yang selalu disinkronkan dan bahkan ingin mengeksekusi secara lokal beberapa file yang terletak di mesin jarak jauh,
sshfs
berfungsi dengan baik.sumber
Saya melakukan sesuatu yang sangat mirip dengan ssh. Saya membuat alat membangun kustom untuk Visual Studio dan pada dasarnya saya memiliki VS menjalankan perintah ssh yang menyalin kode saya ke komputer target dan kemudian mengkompilasinya pada komputer target itu.
Perhatikan penggunaan tanda kutip tunggal dan semi-kolon. Yang pertama mengenkapsulasi perintah Anda ke hostB melalui ssh dan yang terakhir memungkinkan Anda untuk menjalankan beberapa perintah sistem hostB dalam satu perintah ssh dari hostA.
Untuk membuat ini bekerja, Anda harus mengatur kunci ssh pada mesin mulai Anda sehingga Anda bisa menjadi userA @ hostA dan login ke hostB sebagai userB. Proses untuk membuat kunci ssh publik untuk userA @ hostA didokumentasikan dengan baik. Jika Anda tidak membuat kunci publik pada hostA untuk userA, dan menyalin kunci itu ke hostB sebagai userB, maka Anda akan dipaksa untuk memasukkan kata sandi Anda setiap saat - yang merusak kegembiraan otomatisasi.
sumber