pengembangan-web-mp-pd.com

Bisakah scp menyalin direktori secara rekursif?

Saat ini saya hanya dapat menyalin satu .tar file. Tetapi bagaimana saya bisa menyalin direktori secara rekursif dengan scp?

610
kernel

Yup, gunakan -r:

scp -rp sourcedirectory [email protected]:/path
  • -r berarti rekursif
  • -p mempertahankan waktu modifikasi, waktu akses, dan mode dari file asli.

Catatan: Ini menciptakan sourcedirectory di dalam /path dengan demikian file-file tersebut berada dalam /path/sourcedirectory

981
dmourati

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.

177
Phil Hollenback

Itulah yang -r opsi adalah untuk. :)

Lihat halaman manual scp untuk info lebih lanjut jika diperlukan.

34
HedgeMage

Opsi Salin Rekursif '-r' (huruf kecil)

scp -r

Yang saya bingung dengan opsi salinan rekursif lokal biasa '-R' (huruf besar)

cp -R
12
Tarun

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:

  • -a: mode arsip (termasuk banyak opsi umum standar, termasuk melestarikan symlink)
  • -z: kompres
  • -v: verbose: tampilkan file
  • -P: tunjukkan progess saat file selesai/file tersisa
  • -e ssh: lakukan rsync dalam protokol ssh
  • --delete: hapus file di tujuan yang tidak lagi di sumber
7
mick

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

4
user9869932

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...

2
Anubioz

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
1

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.

0
atthik