我正在尝试从源到目标scp多个文件。场景是源文件名与目标文件不同
这是我想要做的SCP命令
scp /u07/retail/Bundle_de.properties rgbu_fc@<fc_host>:/u01/projects/MultiSolutionBundle_de.properties
基本上我确实有超过7个文件,我正在尝试单独的scps来实现它。所以我想把它分成一个单独的scp来传输所有的文件
我在这里尝试的scp命令很少 -
$ scp /u07/retail/Bundle_de.properties rgbu_fc@<fc_host>:/u01/projects/MultiSolutionBundle_de.properties
$ scp /u07/retail/Bundle_as.properties rgbu_fc@<fc_host>:/u01/projects/MultiSolutionBundle_as.properties
$ scp /u07/retail/Bundle_pt.properties rgbu_fc@<fc_host>:/u01/projects/MultiSolutionBundle_pt.properties
$ scp /u07/retail/Bundle_op.properties rgbu_fc@<fc_host>:/u01/projects/MultiSolutionBundle_op.properties
我正在寻找一种解决方案,通过它我可以在一个scp命令中实现上述4个文件。
答案 0 :(得分:2)
在任何标准POSIX shell中看起来都是一个简单的循环:
for i in de as pt op
do scp "/u07/retail/Bundle_$i.properties" "rgbu_fc@<fc_host>:/u01/projects/MultiSolutionBundle_$i.properties"
done
或者,您可以在本地为文件指定新名称(复制,链接或移动),然后使用通配符传输它们:
dir=$(mktemp -d)
for i in de as pt op
do cp "/u07/retail/Bundle_$i.properties" "$dir/MultiSolutionBundle_$i.properties"
done
scp "$dir"/* "rgbu_fc@<fc_host>:/u01/projects/"
rm -rf "$dir"
答案 1 :(得分:1)
使用GNU tar,ssh和bash:
pygame
如果要对文件名使用globbing(tar -C /u07/retail/ -c Bundle_{de,as,pt,op}.properties | ssh user@remote_host tar -C /u01/projects/ --transform 's/.*/MultiSolution\&/' --show-transformed-names -xv
):
*
cd /u07/retail/ && tar -c Bundle_*.properties | ssh user@remote_host tar -C /u01/projects/ --transform 's/.*/MultiSolution\&/' --show-transformed-names -xv
:更改为目录
-C
:创建新档案之前将其扩展为
-c
:bash在执行tar命令Bundle_{de,as,pt,op}.properties
Bundle_de.properties Bundle_as.properties Bundle_pt.properties Bundle_op.properties
:将--transform 's/.*/MultiSolution\&/'
添加到文件名
MultiSolution
:转换后显示文件名
--show-transformed-names
:提取文件并详细列出已处理的文件