2014-11-11

Linux系统备份最近7天的脚本

#!/bin/bash
time_str=`date "+%F-%H%M%S"`
echo $time_str
  
/*生成当前时间字符串*/  
function get_time(){
    time_str=`date "+%F-%H%M%S"`
}
  
/*更改文件名,依次往前推*/  
function change_name(){
    rm -rf 1-*
    name_tail=`ls 2-* | awk -F '-' '{print $2"-"$3"-"$4"-"$5}'`
    mv 2-* 1-$name_tail
    name_tail=`ls 3-* | awk -F '-' '{print $2"-"$3"-"$4"-"$5}'`
    mv 3-* 2-$name_tail
    name_tail=`ls 4-* | awk -F '-' '{print $2"-"$3"-"$4"-"$5}'`
    mv 4-* 3-$name_tail
    name_tail=`ls 5-* | awk -F '-' '{print $2"-"$3"-"$4"-"$5}'`
    mv 5-* 4-$name_tail
    name_tail=`ls 6-* | awk -F '-' '{print $2"-"$3"-"$4"-"$5}'`
    mv 6-* 5-$name_tail
    name_tail=`ls 7-* | awk -F '-' '{print $2"-"$3"-"$4"-"$5}'`
    mv 7-* 6-$name_tail
}
   
/*主备份程序*/ 
function backup(){
   count=`ls |egrep -c "^$1-"`		/*检测参数1的文件是否存在	*/
   if [ $count -eq 1 ]; then		/*判断检测结构			*/
        echo "Find file, not backup"	/*文件存在,不备份		*/
	if [ $1 -eq 7 ]; then		/*检测参数文件是否是最新	*/
	    echo "The number is 7"
            change_name			/*如果为参数为7,则修改之前版本	*/
            get_time
            touch 7-$time_str.bak	/*生成最新版本			*/
	fi
   else
        echo "Not Find"			/*参数名文件不存在,进行备份	*/
        get_time
        touch $1-$time_str.bak
	exit 0				/*备份完毕,退出脚本,即main中的程序只会备份一个	*/
   fi
}
  
function main(){
   backup 1				/*主程序,从第一个版本备份,backup内部会控制如果备份就退出脚本,如果找到就不操作	*/
   backup 2
   backup 3
   backup 4
   backup 5
   backup 6
   backup 7				/*首先查找有7,就修改文件名递推,在备份,没有7就直接备份			*/
   ls -al
}
  
main