2017-02-06 17 views
0

ファイル名がfile.txtファイル内の任意の名前で構成されている場合のみ、すべてのファイルをリモートからコピーします。ファイル名条件に基づいてファイルをコピーする

file.txtなどは

rahul 
jon 
babra 

のような名前は、現在、私は、このやっている含まれています

while read p; do  
scp -i somefile.pem [email protected]:myfolder/\*$p\* . 
done<file.txt 

をしかし、これは、私はfile.txt内のすべての名前のためのリモートへの接続を開きます。

1つの接続ですべてのファイルを処理するための最適化を探していますか?

+2

チェックアウトrsync - ssh経由でファイルを転送することができます。-include-from/--files-from引数は、あなたが望むものを実行します – moonshadow

答えて

3

各後続のscpが再利用できるマスター接続を開きます。より安全な制御パスの使用については、man ssh_configのさまざまなControl*オプションを参照してください。

# Don't run a command (-N), but open a reusable connection (-M and -S) 
# then go to the background (-f) 
ssh -fNM [email protected] -S "%C" 

while read p; do 
    # Reuse the open connection (-S) 
    scp -i somefile.pem -S "%C" [email protected]:myfolder/\*$p\* . 
done < file.txt 

# Close the background connection 
ssh -S "%C" -O exit 
関連する問題