前言
之前做的一个图片分享的小程序,因为服务器端保存了很多图片文件资源且没有备份。怕丢失所以做个备份,刚开始是用springboot做的一个cron定时器应用来定时压缩打包的。后面做完了又想着用linux命令和crontab来做。
目录
思路
在服务器(centos8)创建一个文件压缩备份脚本,然后用crond系统服务来定时执行这个脚本,达到定时备份的需求。
创建脚本
#将小程序图片文件目录进行压缩备份到指定文件夹
#删除12天前的备份数据,只保留最新两个备份
#将使用crond定时器,每周一打包备份一次
#! /bin/sh
#创建一个临时文件
mkdir /usr/local/beifen
#把要备份的数据拷贝到临时文件夹
cp -r /usr/local/uploadFiles /usr/local/beifen
#将临时文件夹数据备份打包
tar -zcPvf /usr/local/uploadFilesZip/bk$(date +%Y%m%d).tar.gz /usr/local/beifen
#删除临时文件夹
rm -rf /usr/local/beifen/
#删除文件夹下超过12天的备份文件
find /usr/local/uploadFilesZip -mtime +12 -name "*.tar.gz" -exec rm -rf {} \;
设置定时执行脚本
命令:crontab -e
执行完会让你输入定时crond表达式,我这里是 30 6 * * 1 /usr/local/backup.sh 每周一早上六点半执行一次。然后wq 保存退出,会提示你新的crond服务创建成功。
记得重启crond服务:service crond restart
至此定时打包备份功能,配置成功。
crond介绍
检查crond服务的状态
/sbin/service crond status
表示该服务正在运行中,如果没有则先安装:yum install crontabs
常用命令
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //启动服务
crond的格式
minute hour day month week command
其中:
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
例如:
3,5 8-11 * * 1 /etc/init.d/smb restart 表示 每个星期一的上午8点到11点的第3和第5分钟重启smb
30 6 * * 1 /usr/local/backup.sh 表示 每个星期一的上午6点30分执行备份脚本
具体输入命令:vi /etc/crontab
crond配置文件
/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如root用户建的crontab任务对应的文件就是/var/spool/cron/root。一般一个用户最多只有一个crontab文件。