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:

 

评分:0

我来说两句

我的栏目

日历

« 2024-05-11  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 3231
  • 日志数: 3
  • 建立时间: 2012-04-05
  • 更新时间: 2012-08-05

RSS订阅

Open Toolbar