生产定时备份站点目录实例

                        

 

        思路:很多运维的小伙伴在工作中可能会遇到站点目录该怎么备份的问题,仔细思考了下思路是这样的,首先会想到很多归档工具,比如有tar、gzip、zip、cp、ln、rsync等等...但是在生产环境中并没有最好的备份工具,只有最合适的备份工具。可以通过站点的数据量决定,如果过大的话使用增量即可,如果数据量小的话随便那种都可以,根据实际我选的是zip备份。既然核心问题已经解决,剩下就是写脚本了。


       脚本做了什么:这个脚本的逻辑其实很简单,首先定义站点目录,目录的命令要规范化。我这里是通过年月日命名目录,备份文件的名字呢用分时秒定义。因为是写的定时任务所以每一步都必须要有输出,不然不知道执行哪一步很可怕....附加了日志功能,当show_log等于1的时候执行的命令会在屏幕随同标准输出一并输出,等于0表示记录日志文件,也就是在测试环境的时候将他置为1。(这个方法也可以通过sh -x的方式实现,看个人习惯)。好的,这就是总体思路了。

#!/bin/bash
Script_path=$(dirname $0;pwd)
Site_dir="/home/web/www/"
Sitelist=(`ls ${Site_dir}`)
Show_Log=0
Year=`date +%Y`
Month=`date +%m`
Day=`date +%d`
Date_format=`date +%H%M%S`
Log_date=`date "+%F-%H%M%S"`
Backup_dir="/home/data/backup/$Year/$Month/$Day"
Log_Path="${Script_path}/sitebakup_err.log"
LOG(){
        if [ "$Show_Log" -eq 1 ];then
                echo "$*"
        elif [ "$Show_Log" -eq 0 ];then
                echo "$*" >>/server/scripts/sitebakup_err.log
        fi
}
#打包站点目录到备份目录中
backup(){
        [[ ! -d "$Backup_dir" ]]&&mkdir -p "$Backup_dir"
        cd ${Site_dir}
        for list in ${Sitelist[*]};do
                LOG zip -r "${Backup_dir}"/"$Date_format"_"$list".zip "$list/"
                zip -r "${Backup_dir}"/"$Date_format"_"$list".zip "$list"/
        done
                echo "============== "${Log_date}" ===================" >>/server/scripts/sitebakup_err.log
}
main(){
        backup
}
main                   

测试结果:日志输出情况

测试结果:备份情况

这样就已经实现了我们需要的效果,可以根据时间找到备份文件,测试完成没问题最后一步需要做的就是把它写入定时任务即可

OKKKKKKKKKKKKKKKKKK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值