Di lingkungan Linux, untuk keamanan dan kemudahan penggunaan, ssh adalah cara terbaik untuk melakukannya. SSH, SSHFS, SCP, dan SFTP seperti yang Anda daftarkan semuanya hanyalah layanan berbeda yang dibangun di atas protokol SSH. SCP sangat mudah digunakan, bekerja seperti CP tetapi Anda dapat memberikan nama pengguna dan mesin di jalurnya. Jadi, kita mungkin melakukan CP seperti cp ~/music/ ~/newmusic/
, tetapi kita dapat dengan mudah melakukan scp ~/music/ [email protected]:~/newmusic
untuk mengirimkannya ke komputer bernama host. Itu saja - kita tidak perlu menyiapkan apa pun. Anda akan dimintai kata sandi akun di komputer lain jika Anda tidak memiliki sertifikat atau penyiapan autentikasi lainnya (scp membagikan setelan tersebut dengan ssh, tentu saja).
SFTP adalah alat yang memudahkan untuk melakukan banyak operasi pada sistem file jarak jauh - berfungsi seperti FTP, tetapi berjalan melalui SSH sehingga aman dan hanya memerlukan server SSH. man sftp
akan memberi tahu Anda semua tentang cara menggunakannya. Saya tidak menggunakan SFTP hanya untuk memindahkan folder di antara dua mesin, ini lebih berguna saat Anda memiliki banyak operasi yang harus dilakukan, seperti jika Anda mengatur ulang file di komputer lain.
SSHFS hanya memperluas SFTP ke sistem file:ini memungkinkan Anda untuk memasang host virtual ke sistem file Anda, sehingga hal-hal jaringan terjadi secara transparan. SSHFS adalah untuk penyiapan semi permanen, bukan hanya transfer file satu kali. Dibutuhkan lebih banyak upaya untuk menyiapkannya, yang dapat Anda baca di situs web proyek.
Jika Anda perlu bekerja di lingkungan OS campuran, Samba menjadi taruhan terbaik Anda berikutnya. Windows dan OS X mendukung Samba sepenuhnya secara otomatis, dan Linux juga melakukannya meskipun terkadang sulit untuk digunakan.
Favorit pribadi saya untuk kasus di mana keamanan tidak penting adalah netcat + tar:
Untuk mengirim direktori, cd ke dalam direktori yang isinya ingin Anda kirimkan di komputer yang melakukan pengiriman dan lakukan:
tar -cz . | nc -q 10 -l -p 45454
Di komputer yang menerima konten, cd ke tempat Anda ingin konten muncul dan lakukan:
nc -w 10 $REMOTE_HOST 45454 | tar -xz
Ganti $REMOTE_HOST
dengan ip / hostname komputer yang melakukan pengiriman. Anda juga dapat menggunakan port lain selain 45454
.
Apa yang sebenarnya terjadi di sini adalah bahwa komputer 'penerima' terhubung ke komputer pengirim pada port 45454 dan menerima konten tar'd dan gzip dari direktori, dan meneruskannya langsung ke tar (dan gzip) untuk mengekstraknya menjadi direktori saat ini.
Contoh singkat (menggunakan localhost sebagai host jarak jauh)
Komputer 1
[email protected]:~/nctest/a/mydir$ ls
file_a.txt file_b.log
[email protected]:~/nctest/a/mydir$ tar -cz . | nc -q 10 -l -p 45454
Komputer 2
[email protected]:~/nctest/b$ ls
[email protected]:~/nctest/b$ nc -w 10 localhost 45454 | tar -xz
[email protected]:~/nctest/b$ ls
file_a.txt file_b.log
Untuk pemindahan satu kali, scp direkomendasikan.
Tetapi jika Anda menemukan bahwa dir ini dapat berfungsi dan Anda perlu memindahkannya berkali-kali agar posisi lainnya diperbarui, maka Anda dapat menggunakan rsync (dengan ssh).
Karena rsync memiliki banyak argumen, saya biasanya memasukkannya ke dalam shell kecil jadi saya melakukannya dengan benar (setiap saat). Idenya adalah hanya mengirimkan hal-hal yang telah berubah sejak terakhir kali dijalankan.
#!/bin/bash
user="nisse"
host="192.168.0.33"
echo "Sync: /home/media/music/"
rsync --archive --delete -v --progress -e "ssh -l $user " /home/media/music/ $host:/home/media/music/
Ini akan memindahkan direktori bernama "/home/media/music/" dari komputer lokal ke komputer bernama 192.168.0.33, menggunakan pengguna "nisse". Dan hapus semua yang ada di target yang tidak ada di komputer lokal.