首页 > 代码库 > linux备份脚本(以web为例)

linux备份脚本(以web为例)

    linux服务器中要定期对某一块东西自动备份很有必要,这时就要用到shell脚本来写啦。这里以备份Apache服务器为例,为了方便演练,这里用的Apache是用yun安装的,如果想对源码安装的Apache做自动备份,只需改动相应代码即可。

    [root@localhost ~]# vi bak_web1.sh

    #!/bin/bash

    #name:bak_web.sh

    #description:this is used to back up web script

    

    mypath="/var/bak_web"  ///将备份出来的东西放在指定目录下,这个目录可以是smb分享出来的,也可以是建立在lvm上的

    mylog="/var/log/weblog.txt"   ///将每次备份做一次记录,将每次记录都集中保存在这个指定的文件下(也就是日志),这里的日志目录以及备份目录都是自己根据实际指定的。

    time=`date +%Y-%m-%d-%H:%M`    ///定义每次执行备份要用到的时间变量

    if [ ! -d "$mypath" ];then     ///判断备份目录是否存在,如果不存在就创建这个目录

        mkdir "$mypath"

    fi

    

    mkdir -p $mypath/$time/conf   ///分别创建相应要备份的内容的目录,为的是便于管理

    mkdir -p $mypath/$time/web

    

    cd /etc/httpd/conf/

    tar zcf $mypath/$time/conf/httpd.conf.tar.gz ./httpd.conf  ///将Apache的配置文件打包压缩,取名为httpd.conf.tar.gz,放在$mypath/$time/conf目录下

    ret=$?

    if [ $ret -eq 0 ];then   ///判断上面的打包压缩动作是否做成功了,如果做成功了,就追加写一条“成功”的记录,否则写一条“失败”的记录

        echo "At $time tar htpd.conf.tar.gz successed" >> $mylog

    else

        echo "At $time tar httpd.conf.tar.gz failed" >> $mylog

    fi

    cd /var/www/

    tar zcf $mypath/$time/web/html.tar.gz ./html   ///将Apache的根目录下的各文件打包压缩,取名为html.tar.gz,放在$mypath/$time/web目录下,类似的还可以备份数据库db的

    ret=$?

    if [ $ret -eq 0 ];then   ///判断上面的对Apache根目录打包压缩是否做成功了,如果做成功了就追加一条“成功”记录到$mylog,否则写一条“失败”记录

        echo "At $time tar html.tar.gz successed" >> $mylog

    else

        echo "At $time tar html.tar.gz failed" >> $mylog

    fi

脚本到这里完成,用bash bak_web1.sh执行以下,发现在/var/bak_web/下生成了新的内容,同时在/var/log/weblog.txt日志文件中会有新的记录。

将该脚本添加到crontab下,让其每隔一定时间自动执行一次。我这里设置的是每隔1分钟执行一次,脚本放在/root/目录下,脚本没执行一次,/var/bak_web/目录下以及/var/log/weblog.txt日志文件中都会有新的内容增加。

    [root@localhost ~]# crontab -e

    */1 * * * * bash /root/bak_web1.sh

    用tail -f /var/log/weblog.txt可以试试查看日志变化

wKiom1PPcIHxrnPpAALCrqAEP1Q163.jpg


wKioL1PPchHx_gigAAOFoQDEFmw595.jpg

结果表明此脚本可以按时健康有效的运行。

本文出自 “个人感受” 博客,谢绝转载!

linux备份脚本(以web为例)