返回

【好用】运维实施工程师必备shell脚本-批量拷贝目录,解压

发布时间:2022-11-21 10:06:15 287

场境:实施最头痛的不是遇到问题,而是允许操作服务器时间太少,有时候10几个人用一台,如何更快速的完成服务的部署?

shell功能介绍:
适用于Linux系统,将.tar.gz或.tar格式的文件从/home/source目录批量自动解压到/opt/smile目录中,并将源目录/home/source中的文件移动至/opt/smile目录中

特性:
该过程单个文件移动,同时运行一次将操作信息保存到日志中,日志目录为/opt/smile/smile.log

注意:先创建/opt/smile/目录,这个目录可以随便命名,在脚本里修改即可(一般为公司简称),并给权限

  1. 将需要解压的目录上传到服务器,创建/opt/smile/目录
  2. 编辑脚本,给权限
vim  /opt/smile/auto_install.sh

#! /bin/bash
#日志目录
log="/opt/smile/smile.log"
#获取当前时间
curtime=`date +"%Y/%m/%d %H:%M:%S"`
#打开指定目录
cd /home/source
#获取目录中的文件数,筛选标准是“行首后紧跟着一个-符号”(^代表行首,)
count=`ls -l|grep '^-'|wc -l`
#对目录中的每个文件进行操作,判断目录中是否有文件
if [ $count -ne 0 ];then
for i in `ls -1`
do
echo "操作文件名:$i ">>$log;
# 将文件解压到指定目录
tar zxvf /home/source/$i -C /opt/smile;
#将文件移动到指定目录
mv /home/source/$i /opt/smile;
done
echo "$curtime ,执行成功,操作数目: $count">>$log
else
echo "$curtime source is empty.">>$log
fi

sudo chmod -R 777 /opt/smile/

  1. 执行并验证
    屏幕显示,解压过程

    执行成功,并有日志

    总结:
    可以根据情况对脚本进行调整,zip包也可以进行批量解压,改命令即可!还可以根据情况添加一些判断是否具备软件部署条件,如:java -version ,若依赖Java环境,根据返回值判断,以解压1个为例,10个也一样,方便演示,复杂的先不介绍了!
    例如:可以判断是什么格式的文件用对应的命令来解压(适用于zip包与gz包混合情况)
#! /bin/bash
#日志目录
log="/opt/smile/smile.log"
#获取当前时间
curtime=`date +"%Y/%m/%d %H:%M:%S"`
#打开指定目录
cd /home/source
#获取目录中的文件数,筛选标准是“行首后紧跟着一个-符号”(^代表行首,)
count=`ls -l|grep '^-'|wc -l`
#对目录中的每个文件进行操作,判断目录中是否有文件
#if [ $count -ne 0 ];then
for i in `ls -1`
do
if [ "${i##*.}" == "gz" ];then
echo "操作文件名:$i ">>$log;
# 将文件解压到指定目录
tar zxvf /home/source/$i -C /opt/smile;
#将文件移动到指定目录
mv /home/source/$i /opt/smile;
elif [ "${i##*.}" == "zip" ];then
mv /home/source/$i /opt/smile;
cd /opt/smile && unzip $i
echo "$curtime ,执行成功,操作数目: $count">>$log
else
echo "$curtime source is empty.">>$log
fi
done

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
vagrant配置之JRebel 2022-11-21 09:41:59