Saat ini saya hanya dapat menyalin satu .tar
file. Tetapi bagaimana saya bisa menyalin direktori secara rekursif dengan scp
?
Yup, gunakan -r
:
scp -rp sourcedirectory [email protected]:/path
Catatan: Ini menciptakan sourcedirectory
di dalam /path
dengan demikian file-file tersebut berada dalam /path/sourcedirectory
Meskipun jawaban sebelumnya secara teknis benar, Anda juga harus mempertimbangkan untuk menggunakan rsync
sebagai gantinya. 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, ada baiknya menggunakan rsync
setiap saat 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 terputus 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.
Itulah yang -r
opsi adalah untuk. :)
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/ [email protected]:/dest/
rsync -a -essh [email protected]:/source/ /dest/
Opsi favorit saya adalah -Pazvessh --delete:
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 [email protected]:/directory
ssh [email protected]
remote$ tar -xzvf local.tar.gz
Semoga ini membantu
Anda dapat menyalin direktori secara rekursif ke arsip terkompresi dengan perintah sederhana ini:
ssh -p 22 [email protected] 'cd /parent/directory && tar zcvf - directory_to_copy' > /destination/on/your/machine/archive_name.tgz
Misalnya, untuk menyalin konten /var/log
dari domain.com
hingga ~/logs.tgz
kamu lari:
ssh -p 22 [email protected] '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
hingga ~/destination/log
di sistem Anda:
ssh -p 22 [email protected] 'cd /var && tar zcvf - log' | tar xzf - -C ~/destination
Meskipun untuk mencerminkan direktori, Anda mungkin harus menggunakan rsync
...
Jika Anda lebih suka memasukkan 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 [email protected]:/dest/folder
Anda dapat menggunakan opsi -r dengan perintah scp untuk menyalin direktori secara rekursif pada sistem apa pun. Jika Anda memerlukan referensi lain tutorial perintah scp . Opsi -r adalah singkatan dari operasi rekursif di sebagian besar perintah Linux.