Solusi 1:
Yup, gunakan -r
:
scp -rp sourcedirectory example@unixlinux.online:/path
- -r berarti rekursif
- -p mempertahankan waktu modifikasi, waktu akses, dan mode dari file asli.
Catatan:Ini membuat sourcedirectory
di dalam /path
dengan demikian file akan berada di /path/sourcedirectory
Solusi 2:
Meskipun jawaban sebelumnya secara teknis benar, Anda juga harus mempertimbangkan untuk menggunakan rsync
alih-alih. rsync
membandingkan data di sisi pengirim dan penerima dengan mekanisme diff sehingga tidak perlu mengirim ulang data yang sudah dikirim sebelumnya.
Jika Anda akan menyalin sesuatu ke mesin jarak jauh lebih dari sekali, gunakan rsync
. Sebenarnya, bagus untuk menggunakan rsync
setiap kali karena memiliki lebih banyak kontrol untuk hal-hal seperti menyalin izin dan kepemilikan file dan mengecualikan file atau direktori tertentu. Secara umum:
$ rsync -av /local/dir/ server:/remote/dir/
akan menyinkronkan direktori lokal dengan direktori jarak jauh. Jika Anda menjalankannya untuk kedua kalinya dan konten direktori lokal tidak berubah, tidak ada data yang akan ditransfer - jauh lebih efisien daripada menjalankan scp
dan menyalin semuanya setiap saat.
Juga, rsync
memungkinkan Anda memulihkan dari transfer yang terputus dengan sangat mudah, tidak seperti scp
.
Terakhir, versi modern dari rsync
secara default menjalankan ssh, jadi jika scp
sudah berfungsi, rsync
harus cukup banyak menjadi pengganti drop-in.
Solusi 3:
Itulah -r
pilihan adalah untuk. :)
Lihat halaman manual scp untuk info lebih lanjut jika diperlukan.
Solusi 4:
Opsi Salin Rekursif '-r' (huruf kecil)
scp -r
Yang saya bingungkan dengan opsi penyalinan rekursif lokal biasa '-R' (huruf besar)
cp -R
Solusi 5:
Cara terbaik adalah menggunakan rsync melalui SSH
rsync -a -essh /source/ example@unixlinux.online:/dest/
rsync -a -essh example@unixlinux.online:/source/ /dest/
Opsi favorit saya adalah -Pazvessh --delete :
- -a :mode arsip (menyertakan banyak opsi umum default, termasuk mempertahankan symlink)
- -z :kompres
- -v :verbose :tampilkan file
- -P :tampilkan progess saat file selesai/sisa file
- -e ssh :lakukan rsync di protokol ssh
- --delete :hapus file di tujuan yang tidak lagi ada di sumber