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可以试试查看日志变化
结果表明此脚本可以按时健康有效的运行。
本文出自 “个人感受” 博客,谢绝转载!
原文地址:http://4593973.blog.51cto.com/4583973/1490164