Jawaban:
Yup, gunakan -r
:
scp -rp sourcedirectory user@dest:/path
Catatan: Ini menciptakan bagian sourcedirectory
dalam /path
sehingga file akan masuk/path/sourcedirectory
-pr
(opsi dalam urutan terbalik) tidak akan menyalin folder, tetapi lebih baik isinya ke direktori target (tampaknya, urutan opsi penting).
Meskipun jawaban sebelumnya secara teknis benar, Anda juga harus mempertimbangkan untuk menggunakannya rsync
. rsync
membandingkan data pada sisi pengirim dan penerima dengan mekanisme berbeda 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, itu baik untuk digunakan 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 isi direktori lokal tidak berubah, tidak ada data yang akan ditransfer - jauh lebih efisien daripada menjalankan scp
dan menyalin semuanya setiap waktu.
Juga, rsync
memungkinkan Anda untuk memulihkan dari transfer yang terganggu dengan sangat mudah, tidak seperti scp
.
Akhirnya, versi modern rsync
secara default melebihi ssh, jadi jika scp
sudah berfungsi, rsync
seharusnya cukup menjadi pengganti drop-in.
rsync
lebih efisien. Satu hal yang saat ini tidak dilakukan scp
adalah memperbolehkan penyalinan antar host jarak jauh (setidaknya tanpa menjalankan klien rsync di salah satunya).
-av
: v adalah untuk verbose, a untuk arsip dan merupakan jalan pintas ke -rlptgoD yang menyiratkan rekursif, menjaga tanggal dan tautan pemilik hak. Jika Anda hanya ingin menggunakan rekursif-r
Itulah -r
pilihan untuk itu. :)
Lihat halaman manual scp untuk info lebih lanjut jika diperlukan.
Opsi Salin Rekursif '-r' (huruf kecil)
scp -r
Yang saya bingung dengan opsi salinan rekursif lokal biasa '-R' (huruf besar)
cp -R
Cara terbaik adalah menggunakan rsync di atas SSH
rsync -a -essh /source/ user@dest-server:/dest/
rsync -a -essh user@source-server:/source/ /dest/
Opsi favorit saya adalah -Pazvessh --delete:
rsync
yang saya gunakan akan digunakan ssh
secara default, jadi -essh
tidak mungkin diperlukan. Dan pilihan perintah yang digunakan untuk terhubung ke host jarak jauh benar-benar tidak terkait dengan menyalin secara rekursif.
Setelah mencari bendera salinan rekursif, dan berhasil menggunakannya berkat posting ini, saya ingin memposting hanya saran.
Jika masalahnya Anda menyalin (secara rekursif) direktori. Mungkin jika file yang dikirim terkompresi Anda dapat menghemat waktu dalam transfer
Apa yang saya lakukan pada akhirnya adalah:
local$ tar -czvf local.tar.gz directory/
local$ scp local.tar.gz user@remote:/directory
ssh user@remote
remote$ tar -xzvf local.tar.gz
Semoga ini membantu
.tar.gz
atau .tgz
karena file tersebut adalah arsip tar yang di-gzip (karena -z
flag digunakan).
Anda dapat menyalin direktori secara rekursif ke arsip terkompresi dengan perintah sederhana ini:
ssh -p 22 user@address-to-copy-from.com 'cd /parent/directory && tar zcvf - directory_to_copy' > /destination/on/your/machine/archive_name.tgz
Misalnya, untuk menyalin isi /var/log
dari domain.com
ke ~/logs.tgz
Anda menjalankan:
ssh -p 22 user@domain.com 'cd /var && tar zcvf - log' > ~/logs.tgz
Anda juga dapat mengekstrak file pada sistem target dengan menggunakan pipa. Perintah ini akan menyalin konten /var/log
at domain.com
ke ~/destination/log
di sistem Anda:
ssh -p 22 user@domain.com 'cd /var && tar zcvf - log' | tar xzf - -C ~/destination
Meskipun untuk mencerminkan direktori, Anda mungkin harus menggunakan rsync
...
Jika Anda lebih suka meneruskan kata sandi pengguna sebagai parameter daripada memasukkannya secara interaktif, Anda dapat menggunakan sshpass
( sudo apt-get install -y sshpass
).
Contoh:
sshpass -p 'remote_password' scp -rp /src/folder myremoteusername@122.10.12.123:/dest/folder
Anda dapat menggunakan opsi -r dengan perintah scp untuk menyalin direktori secara rekursif pada sistem apa pun. Jika Anda membutuhkan yang lain, lihat tutorial perintah scp . Opsi -r adalah singkatan dari operasi rekursif di sebagian besar perintah Linux.
-r
opsi telah disarankan tahun lalu dan merupakan jawaban yang diterima.
Opsi lain (kemungkinan lebih baik untuk penggunaan berulang) adalah menggunakan NFS - lihat nfs-kernel-server dan cara mensetup share NFS.
scp
tetapi NFS bukan opsi.