scp'ing banyak file dalam satu akses - ke beberapa tujuan pada satu server target?

9

Saya ingin scp sekitar setengah lusin file dalam beberapa direktori ke direktori yang sama pada mesin target.

Tanpa menggunakan kunci ssh, apakah ini bisa dilakukan dalam satu panggilan?

Sebagai contoh:

scp /path/to/fileA,/anoth/erpath/to/fileB,/yet/more/files/*    #continue next line
    destination:/path/to,/anoth/erpath/to,/yet/more/files
warren
sumber

Jawaban:

8

Zip up file di sisi pengiriman dan unzip di sisi penerima.

tar -cf - /path/to/fileA /anoth/erpath/to/fileB /yet/more/files/* |
ssh -C destination 'cd / && tar -xf -'

Anda juga dapat membuat skrip sesi sftp, atau menggunakan rsync dengan filter yang tepat.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
jika Anda hanya memiliki beberapa file, Anda harus menyalin total daripada saya menghargai scp -rsolusinya. tetapi untuk lebih banyak ini jauh lebih cepat.
xaedes
4

Anda dapat menyalin dari beberapa src ke satu tujuan. scp -r src1 src2 ... dst Tetapi tidak ke beberapa tujuan.

Salah satu opsi adalah menyalin semua direktori ke direktori tujuan temp. Kemudian pindahkan kembali setelah itu.

fseto
sumber
ini bekerja sebaik solusi tar-ssh. plus lebih mudah untuk mengetik / mengingat. itu juga memberi Anda umpan balik tentang apa yang sedang diunggah. TETAPI jika Anda memiliki banyak file kecil untuk menyalin tar-ssh akan jauh lebih cepat, karena hanya perlu mentransfer satu file besar, sedangkan scp-r menyalin setiap file secara individual dengan overhead yang lebih banyak.
xaedes
1

Lihatlah psshpaketnya. Ia memiliki parallel-scpperintah. -hopsi memungkinkan Anda untuk menyediakan file teks dengan beberapa host sebagai tujuan (satu per baris).

Coder Kasual
sumber
Apakah ini perlu untuk meminta kata sandi setiap kali file dari A masuk ke B?
warren
2
Untuk itu saya gunakan ssh-add. Anda mengetikkan kredensial Anda satu kali pada awal hari. Kemudian Anda masuk secara otomatis.
Casual Coder
0

Saya menggunakan perintah berikut untuk menyalin banyak file ke beberapa tujuan.

scp -r src {1,2,3} dest {1,2,3}

perintah ini bertindak seperti kumpulan perintah berikut

scp -r src1 dest1

scp -r src1 dest2

.

.

.

scp -r src3 dest2

scp -r src3 dest3

Junaid Malik
sumber
Tidak berfungsi ketika saya mencoba. ubuntu@landslide:~$ scp -r {test1,test2} landslide:/home/ubuntu/{test3,test4} scp: /home/ubuntu/test4: No such file or directoryIa ingin tujuan menjadi direktori.
sudo