编写shell脚本一键下载特定目录下的tar.gz包文件

1、背景概述:

工作中遇到这样一种情况,就是有时候需要下载服务器某个目录下面所有后缀名为tar.gz的压缩包到本地目录存放,一般我们都会直接使用sz命令直接进行文件传输下载,但是需要一级一级cd到相关的目录下去。这样就比较繁琐,而且有的时候遇到层级目录结构比较深的更是抓狂,但是如果通过编写一个shell脚本来执行这项重复的操作就比较方便了,基本可以实现一键下载,同时还可以指定包名(关键字匹配)进行下载。

2、前提工作:

需要设置一下xshell工具(不一定非得是xshell工具,这里我用的是xshell)的文件下载默认目录路径,避免每次都弹出窗口指定本地存放路径。

image.png

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

分配完之后

image.png

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

6、执行效果:

image.png
image.png
image.png

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 74,417评论 12 116
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    O感悟人生O阅读 7,327评论 2 27
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 127,466评论 18 546
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 50,919评论 12 412
  • 卡尔维诺小说《寒冬夜行人》的开篇,谈到阅读的姿势: 你先要找个舒适的姿势:坐着、仰着、蜷着或者躺着;仰卧、侧卧或者...
    kevinou2007阅读 666评论 3 11