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

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.


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.


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


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


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