Shell自动备份程序脚本

上一篇 / 下一篇  2010-12-21 13:25:42 / 个人分类:自动化测试

最近,项目版本更新太频繁,所以就写了个简单的脚本来进行备份。
具体需求是:
  1. 每天晚上19:00备份程序文件到backup目录,并以时间戳为结尾。
  2. 超过3天的程序自动清除掉。
  3. 如果有人为的拷贝到backup目录,不进行任何操作。
 
思路:分两步进行
  先进行备份工作
    1. 将需要备份的程序文件名写入config,统一配置管理
    2. 将文件中的每一行作为一个变量,进行备份。
    3. 利用date +%Y%m%d,将每一个程序文件加上时间戳进行重命名。
   
   进行删除三天以前的数据
     1. 进入backup文件夹,然后用/bin/ls -lt对文件夹进行排序。(不能用ll,因为crontab是找不到ll命令的,ll -t 相当于ls -lt,只不过进行了alias)
     2. grep出2010命名的,这样能排除对人为拷贝文件的操作。
     3. 利用sed抽取三天以后的行,然后存放到文件中。
     4. 用AWK取出文件名这一列并存放到文件中。
     5. 遍历文件,进行逐一删除。
     6. 删除完后,记得还原到脚本执行的目录

echo "start to backup for file"
for i in `cat /var/www/config`;do
  echo "start to back the file of $i";
  cp -r /var/www/$i /var/www/backup/$i.`date +%Y%m%d`
done

##delete the data before 3 days
 cd /var/www/backup/ && /bin/ls -lt| grep '2010'>/var/www/tmp;

 awk '{print $9}'  /var/www/tmp> /var/www/file;

 sed -n '7,$p'  /var/www/file > /var/www/tmp ;
 for j in `cat /var/www/tmp`;do

   echo $j
   rm -rf $j
 done

 cd /var/www/


另外,crontab一定要将标准输出和错误输出都定向到文件中, 2>&1. 以免crontab没有执行,或执行错误。

TAG:

 

评分:0

我来说两句

Open Toolbar