为什么80%的码农都做不了架构师?>>>   

这篇文章主要是说一下文件备份的脚本的编写心得

这一次工作中,因为管理员的操作失误导致系统文件受损,但是当时服务器上也没有进行一些备份的处理。那么问题来了,如果后期再遇到这种问题怎么办?这时候我们一起讨论要不写一个简单的备份脚本吧!这个脚本要实现几个功能:文件备份、数据库备份、分表备份、打包压缩、定时删除过期备份。

好了我们可以认为以上就是我们脚本的需求。那么接下来我们就开始来分析流程步骤

1.设置一些变量,方便后面使用

#备份存放路径
COPY_DIR="/www"
#要备份网站地址
WWW="/home/wwwroot/xxx"
#备份保留时间,单位:秒
DAY=86400
#当前时间,用于备份文件名字
DATE=$(date +%Y_%m_%d)
#数据库配置信息
HOSTNAME="127.0.0.1"
USERNAME="root"
PASSWORD="root"
DBNAME="xxx"
#配置要导出的表 * 全部,否则表名之间 空格 隔开
TABLENAME="*"
#TABLENAME="xx_user"

2.我们检测一下要备份的文件夹是否存在,如果不存在那么就创建一个

#检测文件夹是否存在
if [ ! -d "$COPY_DIR" ];thenmkdir "$COPY_DIR"
fi

3.我们开始打包-压缩我们要备份的文件(网站源码)

#打包网站源码
zip -r ${COPY_DIR}"/"${DATE}".zip" "$WWW"

4.导出sql文件,可以导出整个数据库,也可以导出单个数据表

#导出sql文件
if [ "$TABLENAME" == "*" ];then
mysqldump -u$USERNAME -p$PASSWORD -h$HOSTNAME $DBNAME > ${COPY_DIR}"/"${DATE}".sql"
else
mysqldump -u$USERNAME -p$PASSWORD -h$HOSTNAME $DBNAME $TABLENAME > ${COPY_DIR}"/"${DATE}".sql"
fi

5.合并打包-压缩文件以及数据库到一个zip中

suiNumber=`date +%s%N`
#合并打包+按照时间生成文件
zip -r ${COPY_DIR}"/www_"${DATE}"_"$suiNumber".zip" ${COPY_DIR}"/"${DATE}".zip" ${COPY_DIR}"/"${DATE}".sql"

6.压缩成功后删除备份+数据库的备份文件

#压缩成功删除源文件
#随机数
rm -rf ${COPY_DIR}"/"${DATE}".zip" ${COPY_DIR}"/"${DATE}".sql"

7.以上我们已经打包好了,那么下面我们就要调用一个函数,根据时间的推移删除已经失效的备份文件

#备份文件循环删除函数()
delFile(){for file in `ls $1` #注意此处这是两个反引号,表示运行系统命令docd ${COPY_DIR}#当前时间date_1="`date +'%Y-%m-%d %H:%M:%S'`"dtime="`date -d "$date_1" +%s`"#文件创建时间(最后修改时间)ymd="`ls --full-time $file | cut -d ' ' -f 6`"his="`ls --full-time $file | cut -d ' ' -f 7`"time="`date -d "$ymd $his" +%s`"#计算后的时间newtime=`expr $time + $DAY`if [ $newtime -lt $dtime ];then#删除旧数据rm -f $filefidone
}
#调用备份删除函数删除旧备份
delFile $COPY_DIR

8.输出一些用户提示消息

echo "备份完成"
echo "文件路径:$COPY_DIR"
echo "文件名:"${COPY_DIR}"/www_"${DATE}"_"$suiNumber".zip"
echo "Monte©️644527030@qq.com"

好了到这里我们这个shell就写完了,写的不是太深,不过解决了我们的一些文件以及数据表的备份问题。代码已经放到gitee,地址:https://gitee.com/perma/shell/blob/master/packcopy.sh

转载于:https://my.oschina.net/mateng/blog/3023328

一个简单的shell文件备份脚本相关推荐

  1. Linux:写一个简单的shell求和脚本并运行

    步骤 1.创建空脚本 touch sum.sh 2.编辑脚本文件 vi sum.sh 3.向脚本中添加代码 #!/bin/bash i=0;sum=0 while [ $i -le 10 ] do l ...

  2. 一个简单的SHELL脚本模板

    一个简单的SHELL脚本模板,适用于Java项目的启动,停止,重启. 如果在windows上编辑,请使用Notepad++ 设置编码格式为UTF-8无BOM编码,脚本的文档格式为UNIX格式,否则会因 ...

  3. 35 行代码实现一个简单的 shell

    先上代码 shell.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include & ...

  4. 最近写了一个简单的面向对象的脚本语言 Q 语言

    最近写了一个简单的面向对象的脚本语言 Q 语言,语法类似于 Javascript, 加入了一些 python 的语法功能. 同时实现了部分的 Javascript prototype 的功能 (个人觉 ...

  5. UNIX-LINUX编程实践教程-第八章-实例代码注解-写一个简单的shell

    一 分析 要实现一个shell,需包含3个步骤 1)读入指令 2)指令解析 3)执行指令 1 从键盘读入指令 从键盘读入指令的几个要点: 1)调用getc函数等待并获取用户键盘输入. 2)每一行命令的 ...

  6. 一个简单的shell脚本--判断网段主机IP存活情况

    在日常工作中,我们运维人员有时也需要配合网络工程师进行测试网络IP的使用情况,此脚本用于测试使用. 编辑脚本: vi ipmom.sh #!/bin/bash # #by skyfans #seq命令 ...

  7. Unity 3D 一个简单的角色控制脚本

    之所以写这个脚本,是因为我想起了我还是新手的时候,那时为了一个角色控制脚本百度了半天还是一无所获,因为看不懂啊,都写的太高级了 希望这个脚本能够帮助那些 像曾经的我一样迷失于代码中的新手们能够清晰的理 ...

  8. python简单代码编写-Python | 编写一个简单的Excel处理脚本

    前段时间,温老师找我说财务处的某老师平日处理大量的Excel,很多都是机械的重复劳动,不胜其烦.和我简单说了下需求,看我能不能写个程序帮一下忙. 需求简述如下: 一个多行多列的Excel文档有一列为& ...

  9. 一个简单的防爬虫脚本(转载欧彬)

    因为公司有时候受爬虫的影响,有时候应用压力很高,所以决定封掉大部分爬虫. 1.检测user-agent 2.设定一个阀值,如果超过这个访问阀值,就进入灰名单,某个时间段联系两次进入灰名单,就干掉这个i ...

最新文章

  1. 【GCN】万字长文带你入门 GCN
  2. php登录失败后,php – X尝试失败后阻止登录
  3. linux常用文本编辑器nano/vi/vim
  4. linux下如何使用configure/make/make install命令编译安装卸载程序
  5. maven原型_创建自定义Maven原型
  6. 如何用 JavaScript 下载文件
  7. 如何在EDUIS中导出ETL字幕模板_给视频加字幕?这8个工具助力你的短视频创作!...
  8. 查看Linux占用内存/CPU最多的进程
  9. Ubuntu解压、压缩zip、tar、tar.gz、tar.bz2文件
  10. Coall-jtag烧写器功能与特色
  11. vue3-proxy
  12. 联想笔记本e43l_联想笔记本E43L的产品介绍
  13. 【luogu3403】跳楼机 [同余最短路]
  14. (15)[ICML13] Momentum: On the importance of initialization and momentum in deep learning
  15. 网站的服务器ip变动,网站切换服务器IP,如何快速快速刷新DNS以获得测试?
  16. 深入解析云原生网络抖动引起的性能问题 @龙蜥社区eBPF SIG
  17. 图像基本处理——图像阈值和平滑
  18. 关于void (visit)(const ElemType )的理解
  19. 如何才能做好网站seo
  20. 校园IP网络广播系统方案

热门文章

  1. 深入理解Plasma(一)Plasma 框架
  2. 【原】NIO通信模型和BIO通信模型
  3. 如果一切需要重学,2014年应该学哪些技术?
  4. 二分查找的平均查找长度_二分查找(折半查找)代码实现
  5. springMVC---servletAPI
  6. Exchange 2016 CU9 已发布
  7. 判断response.data是否为空
  8. 《zw版·ddelphi与halcon系列原创教程》Halcon的短板与delphi
  9. java期末考试 6
  10. 应用程序框架实战二十三:基础查询扩展