您的位置:首页 > 运维架构 > Linux

记录 Linux 禅道备份过程

2017-07-28 00:00 239 查看

背景:

部门使用的禅道系统部署在公司内网Linux 服务器上,上次服务器突然网卡坏了,里面的数据差点拿不出来。 于是动手研究禅道的备份方法。

思路:

对于Windows 版本来说,备份很简单,只需要把整个目录复制备份一下就好了;而对于Linux 版本这种方式似乎不可行,而且整个目录备份的方式会比较臃肿。

从备份恢复的角度: 使用禅道安装软件安装完一次后,恢复时只需要导入备份的数据库sql 和附件、截图等文件即可。 所以备份也可以采取同样的方式,分别备份数据库和附件目录就可以了。

参考网上的Linux 脚本, 写了以下 sh 脚本:

备份数据库:

file=/opt/zentaobackup/backup"$(date +"%y%m%d%H%M%S")".sql

/opt/lampp/bin/mysqldump --opt --force -u root -p'' zentao > $file

gzip $file

执行这个脚本时,可以把当前的数据库备份导出,并对备份文件进行压缩。

备份所有文件:

tar -cvzf /opt/zentaobackup/filebackupall"$(date +"%y%m%d%H%M%S")".tar.gz /opt/lampp/htdocs/zentaopms/www/data/upload/*

执行这个脚本时,把禅道的 upload 目录打包备份。

备份当前月份文件:

由于upload 目录的文件是按月份增量增加的,所以考虑日常维护时每天只备份当前月份的文件目录,所以文件的备份可以定期(比如每个月)执行一次,减少备份的文件数量。

例如备份3月份的文件:

tar -cvzf /opt/zentaobackup/filebackup"$(date +"%y%m%d%H%M%S")".tar.gz /opt/lampp/htdocs/zentaopms/www/data/upload/1/201703/*

自动备份执行:

在服务器中添加一个定时任务,每天自动执行以上的备份脚本:

输入 crontab -e 命令编辑crontab服务文件,添加以上脚本,设置为每天10点执行,举例如下:

00 10 * * * /opt/zentaobackup/backup.sh

至此备份工作就基本完成了,每天10点会自动执行以上的备份脚本。

附上crontab 任务调度文件的格式:

具体格式如下:
Minute Hour Day Month Dayofweek command
分钟 小时 天 月 天每星期 命令
每个字段代表的含义如下:
Minute 每个小时的第几分钟执行该任务
Hour 每天的第几个小时执行该任务
Day 每月的第几天执行该任务
Month 每年的第几个月执行该任务
DayOfWeek 每周的第几天执行该任务
Command 指定要执行的程序
在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选

字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。
举例如下:
5 * * * * ls 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,

以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]

30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]

25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]

*/15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]

30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令。 ]

每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件

50 7 * * * root run-parts /etc/cron.daily [ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]

阅读 1

投诉
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  禅道备份脚本