Saat ini saya hanya dapat menyalin satu .tar
file. Tetapi bagaimana saya bisa menyalin direktori secara rekursif scp
?
573
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 digunakanrsync
setiap kali karena memiliki lebih banyak kontrol untuk hal-hal seperti menyalin izin dan kepemilikan file dan mengecualikan file atau direktori tertentu. Secara umum: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 sepertiscp
.Akhirnya, versi modern
rsync
secara default melebihi ssh, jadi jikascp
sudah berfungsi,rsync
seharusnya cukup menjadi pengganti drop-in.sumber
rsync
lebih efisien. Satu hal yang saat ini tidak dilakukanscp
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.
sumber
Opsi Salin Rekursif '-r' (huruf kecil)
Yang saya bingung dengan opsi salinan rekursif lokal biasa '-R' (huruf besar)
sumber
Cara terbaik adalah menggunakan rsync di atas SSH
Opsi favorit saya adalah -Pazvessh --delete:
sumber
rsync
yang saya gunakan akan digunakanssh
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:
Semoga ini membantu
sumber
.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:
Misalnya, untuk menyalin isi
/var/log
daridomain.com
ke~/logs.tgz
Anda menjalankan:Anda juga dapat mengekstrak file pada sistem target dengan menggunakan pipa. Perintah ini akan menyalin konten
/var/log
atdomain.com
ke~/destination/log
di sistem Anda:Meskipun untuk mencerminkan direktori, Anda mungkin harus menggunakan
rsync
...sumber
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:
sumber
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.
sumber
-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.
sumber
scp
tetapi NFS bukan opsi.