根据文件名条件复制文件

时间:2017-02-06 14:07:38

标签: linux bash scp

仅当文件名由我的file.txt文件中的任何名称组成时,才从远程复制所有文件。

file.txt包含

之类的名称
rahul
jon
babra

目前我这样做:

while read p; do      
scp -i somefile.pem myuser@myip:myfolder/\*$p\* .
done<file.txt

但是这会为我的file.txt中的每个名字打开与remote的连接。

我正在寻找优化来在一个连接中提供所有文件?

1 个答案:

答案 0 :(得分:3)

打开每个后续scp可以重复使用的主连接。有关使用更安全的控制路径的建议,请参阅Control*中的各种man ssh_config选项。

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

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

# Close the background connection
ssh -S "%C" -O exit