Bagaimana cara menyalin semua file dari direktori ke direktori jarak jauh menggunakan scp?


68

Tujuan saya adalah hanya menyalin semua file dari ~ / local_dir ke user@host.com / var / www / html / target_dir menggunakan scp dan jangan membuat kategori local_dir di local_dir.

/var/www/html/target_dir/files..

tapi tidak

/var/www/html/target_dir/local_dir/files.. saat menggunakan parameter -r


1
Tidak scp * user@host.com:/var/www/html/target_dirmelakukan apa yang Anda inginkan? Jika demikian, harap edit dengan lebih detail tentang apa yang Anda coba lakukan & telah coba sejauh ini.
Michael Homer

Menambahkan /. tidak lagi berfungsi. Lebih lanjut di sini
Tsulatsi Tamim

Jawaban:


91

scp memiliki argumen -r. Jadi, coba gunakan:

$ scp -r ~/local_dir user@host.com:/var/www/html/target_dir

Argumen -r bekerja sama seperti argumen -r di cp, itu akan mentransfer seluruh folder Anda dan semua file dan subdirektori di dalamnya.


5
Perintah Anda membuat local_dirdirektori di / var / www / html / target_dir tujuan saya adalah menyalin file saja.
Edgaras Karka

Maaf, saya salah. Kemudian ulangi perintahnya, tetapi seperti ini: $ scp -r ~/local_dir user@host.com:/var/www/html/Kemudian ganti nama direktori baru jika perlu.
parazyd

8
Atau $ scp -r ~/local_dir/* user@host.com:/var/www/html/target_dirApapun yang mengapungkan kapal Anda.
parazyd

Bagaimana mengecualikan direktori tertentu dari lokal saat menyalin ke remote
Sushivam

13
Ubah wildcard *ke titik .dan Anda akan menyalin isi direktori (termasuk file titik apa pun) tanpa menyalin direktori itu sendiri. scp -pr ~/local_dir/. user@example.com:/path/to/target_dir
roaima

19

Jika tujuan Anda adalah untuk mentransfer semua file dari local_dirsatu *wildcard melakukan trik:

$ scp ~/local_dir/* user@host.com:/var/www/html/target_dir

The -rpilihan berarti "rekursif", sehingga Anda harus menulis ketika Anda mencoba untuk mentransfer seluruh direktori atau beberapa direktori.

Dari man scp:

-r 
Recursively copy entire directories. Note that scp follows symbolic links encountered in the tree traversal.

Jadi jika Anda memiliki sub-direktori di dalam local_dir, contoh terakhir hanya akan mentransfer file, tetapi jika Anda mengatur -ropsi, itu akan mentransfer file dan direktori.


1+ Karena Anda perlu membaca komentar dalam jawaban yang diterima untuk mendapatkan jawaban yang benar, sementara yang ini hanya menjelaskannya secara langsung.
André Christoffer Andersen

17

Menambahkan /.ke direktori sumber Anda akan mentransfer isinya alih-alih direktori itu sendiri. Berbeda dengan solusi wildcard, ini akan mencakup file tersembunyi juga.

$ scp -r ~/local_dir/. user@host.com:/var/www/html/target_dir

Penghargaan untuk solusi ini berlaku untuk roaima, tetapi saya pikir itu harus diposting sebagai jawaban aktual, bukan hanya komentar.


0

Ikuti langkah ini:

  1. Salin direktori local_dirdengan semua sub-direktori:

    scp -r ~/local_dir user@host.com /var/www/html/target_dir
    
  2. hanya menyalin isi local_dirdan bukan direktori local_diritu sendiri:

    scp -r ~/local_dir/* user@host.com /var/www/html/target_dir
    
  3. Jangan gunakan: scp -r ~/local_dir/. user@host.com /var/www/html/target_dirkarena melempar kesalahan (baru diuji dan menerima kesalahan berikut):

    scp: error: unexpected filename: .
    
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.