需求背景
目前所在的创业公司需要定时备份以下,工作时候使用的phabricator,本来应该是运维人员早就做了的事情。后来公司人事变动没有了运维,我们有限使用的其中的一台机器,移动phabricator的时候,发现他没有备份。好在需要备份的文件是通过docker 的目录挂出来的。
需求
将phabricator的恢复文件每天备份一次,保留三天的备份。
解决
每天备份一次可以使用 crontab ,放在深夜无人的时候做。
crontab -e
10 2 * * * /bin/bash /mnt/data/backup.sh
保留三份,这个如何实现,我以前练习C语言的时候,写过计算当前时间的前一秒,这个可不是一个简但的时间相减就可以了,要考虑闰年,每天,每月,每年的最后一秒,还有历史上少了的几天(确切的说是1582年10月5日到10月14的十天)
好在linux 下date 命令有个参数可以直接指定前多少时间
比如当前日期的前三天
date +%Y_%m_%d --date="-3 day"
于是这个脚本就比较容易写了
#!/bin/bash
new=`date +%Y_%m_%d`
del=`date +%Y_%m_%d --date="-3 day"`
/usr/bin/cp -r /mnt/data/phabricator /mnt/data/phab_backup/phab_$new ;
/usr/bin/rm -r /mnt/data/phab_backup/phab_$del ;
有没有更好的方式?
-
从开发角度上, 使用分钟。或者秒,可以先验证是否正确,然后再写入corntab
-
corntab 定时任务,万一出了什么问题,如何监控,最后还是放在CI(如jenkins中).