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: