bir geçişte birden fazla dosya scp'ing - bir hedef sunucuda birden fazla hedefe?


9

Bir hedef makinede aynı dizinlere birkaç dizin içinde yaklaşık yarım düzine dosya scp istiyorum.

Ssh anahtarlarını kullanmadan, bu bir çağrıda mümkün mü?

Örneğin:

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

Yanıtlar:


8

Gönderen taraftaki dosyaları sıkıştırın ve alıcı taraftaki sıkıştırılmış dosyaları açın.

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

Bir sftp oturumu da komut dosyası oluşturabilir veya doğru filtreyle rsync kullanabilirsiniz.


yalnızca birkaç dosyanız varsa, scp -rçözümü takdir ettiğimden toplam olarak kopyalamanız gerekir . ama daha fazlası için bu çok daha hızlı.
xaedes

4

Birden fazla src'den bir hedefe kopyalayabilirsiniz. scp -r src1 src2 ... dst Ancak birden fazla hedefe değil .

Bir seçenek, tüm dizini geçici bir hedef dizine kopyalamaktır. Sonra onları geri taşı.


bu tar-ssh çözümü kadar iyi çalışır. ayrıca yazmak / hatırlamak daha kolaydır. ayrıca yüklenenler hakkında geri bildirimde bulunur. ANCAK tar-ssh kopyalamak için çok sayıda küçük dosyanız varsa, sadece bir büyük dosyayı aktarmak zorunda olduğu için çok daha hızlı olacaktır.
xaedes

1

psshPakete bak . Bu sahiptir parallel-scpkomutu. -hseçeneği, hedef olarak birden çok ana bilgisayar içeren metin dosyası sağlamanıza olanak tanır (her satıra bir tane).


A'dan B'ye bir dosya her gittiğinde parola sormak zorunda kalıyor mu?
warren

2
Bunun için kullanıyorum ssh-add. Kimlik bilgilerinizi günün başında bir kez yazarsınız. Ardından otomatik olarak oturum açmış olursunuz.
Casual Coder

0

Birden çok dosyayı birden çok hedefe kopyalamak için aşağıdaki komutu kullanıyorum.

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

bu komut aşağıdaki komut kümesi gibi davranır

scp -r src1 dest1

scp -r src1 dest2

.

.

.

scp -r src3 dest2

scp -r src3 dest3


Denediğimde çalışmıyor. ubuntu@landslide:~$ scp -r {test1,test2} landslide:/home/ubuntu/{test3,test4} scp: /home/ubuntu/test4: No such file or directoryHedefin bir dizin olmasını istiyor.
sudo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.