1、背景概述:
工作中遇到这样一种情况,就是有时候需要下载服务器某个目录下面所有后缀名为
tar.gz
的压缩包到本地目录存放,一般我们都会直接使用sz
命令直接进行文件传输下载,但是需要一级一级cd
到相关的目录下去。这样就比较繁琐,而且有的时候遇到层级目录结构比较深的更是抓狂,但是如果通过编写一个shell脚本来执行这项重复的操作就比较方便了,基本可以实现一键下载,同时还可以指定包名(关键字匹配)进行下载。
2、前提工作:
需要设置一下xshell工具(不一定非得是xshell工具,这里我用的是xshell)的文件下载默认目录路径,避免每次都弹出窗口指定本地存放路径。
3、编写shell脚本(get_all_jenkins_target.sh):
#!/bin/bash
basedir='/home/jenkins/workspace'
usage() {
echo "$0 [base|workFlowEngine|settings|access|order|risk]"
}
usage
if [ $# -eq 1 ];then
path=$1
tar=`find ${basedir}/*${path}* -name "*.tar.gz" -type f`
echo "============starting to transfer $tar ============"
sz -b $tar
else
echo "============starting to transfer all tar.gz in $basedir =============="
for tar in $(find ${basedir}/ -name "*.tar.gz" -type f); do sz -b $tar;done
fi
echo "====tracsfer success===="
4、分配权限:
比如我们将shell脚本get_all_jenkins_target.sh
放到一个根目录(/home/jenkins/workspace
)下,然后分配用户宿主和执行权限。
4.1、分配jenkins宿主(使用root账户权限进行分配):
[root@base ~]$ chown -R jenkins:jenkins get_all_jenkins_target.sh
4.2、赋予x可执行权限
[root@base ~]$ chmod +x get_all_jenkins_target.sh
分配完之后:
5、执行shell脚本
后面不加任何参数,表示下载所有后缀名为tar.gz的压缩包
[jenkins@base ~]$ sh get_all_jenkins_target.sh
后面加上参数(比如这里加了order
),表示下载所有后缀名里面包含了order
关键字的tar.gz压缩包
[jenkins@base ~]$ sh get_all_jenkins_target.sh order