BASH自动备份脚本
上一篇 /
下一篇 2012-07-26 17:56:48
/ 个人分类:SHELL
由于前几天一不小心把配置文件删除,搞得我花了三个小时去配,很费时间,当时就想做个脚本去备份放到crontab做为定时任务那以后这种情况就不会发生了。
代码很容易以下是源代码,基础版本,还可以改进
#! /bin/bash
#****************************************************************#
# 使用注意项 #
#1.设置成crontab之后不要移动文件的位置,如果需要移动,请重新设置crontab #
#2.crontab可能需要有相关的权限 #
#3.目前只在货架项目下使用,有需要可以更改相关函数 #
#4.每月26日自动将保存的config文件比较,内容重复的自动删除 #
#5.可以手工执行 ................ #
#****************************************************************#
echo "----------------------------------------------------"
echo "--------------------备份文件脚本----------------------"
echo "--------------------version 1.0 --------------------"
echo "----------------------------------------------------"
export CONF_BAK=$HOME/ssmsdomain/ssmsserver/ssms/conf/confbak
export CONF=$HOME/ssmsdomain/ssmsserver/ssms/conf
a=`date +%Y%m%d`
#备份路径创建函数
function dir(){
test -d $CONF_BAK
d=$?
if [ $d -ne 0 ];then
mkdir $CONF_BAK
fi
}
dir;
#备份函数
function copy(){
cp $CONF/system-config.xml $CONF_BAK/system-config${a}.xml
cp $CONF/datasync.xml $CONF_BAK/datasync${a}.xml
}
#除去重复备份函数
function rmsame(){
cd $CONF_BAK
for i in `ls $CONF_BAK`
do
for j in `ls $CONF_BAK`
do
if [ $i != $j ];then
diff $i $j >/dev/null 2>&1
a=$?
if [ $a -eq 0 ];then
rm $i
fi
fi
done
done
}
#只对一个文件存在与否做为判断,也可以做成两个,感觉没有必要
if [ -f $CONF_BAK/system-config${a}.xml ];then
echo "今天已经备份过,需要覆盖备份吗?"
echo "1:覆盖"
echo "2:放弃"
read b
if [ $b -eq 2 ];then
echo "你选择的是放弃,本次不备份"
elif [ $b -eq 1 ];then
copy;
fi
else
copy;
echo "备份成功"
fi
echo "以下是去除重复备份功能"
#设置成每个月的26日重复备份
d=`date | awk '{print $3}' | sed 's/日//g'`
#echo $d
if [ $d -eq 26 ];then
rmsame;
fi
写完了之后写一个crontab
crontab -e
下面就不讲了,都是一些比较简单的配置
收藏
举报
TAG: