码迷,mamicode.com
首页 > 其他好文 > 详细

自动备份/etc目录

时间:2016-01-05 12:14:04      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

阅读目录

 

脚本要求
 
将/etc目录下的所有文件cp到/var/backup目录下的以当天的日期命名的目录中例如(/var/backup/etc.20151202)并且判断前一天的目录中的文件与当天的区别,如果无区别,则删除前一天的备份目录

脚本实现

#!/bin/bash
#script_file: bak_etc.sh
#Author: vforbox

bak_from_name="etc"                   #变量为所要备份的目录名
bak_from_dir="/etc"                   #变量为所要备份的目录路径
bak_to_dir="/var/backup"              #变量为所要备份到的目录的父(上级)目录路径
bak_dir="${bak_to_dir}${bak_from_dir}.$(date +%Y%m%d)"                                  #变量为所要备份到的目录路径
day_bak_dir="${bak_to_dir}${bak_from_dir}.$(date -d ‘-1 day‘ +%Y%m%d)"                  #变量为所要备份目录前一天的备份目录路径
new_md5_file="${bak_to_dir}/new_md5.$bak_from_name.$(date +%Y%m%d)"                     #变量为当天所计算出来的所要备份目录的MD5列表
old_md5_file="${bak_to_dir}/old_md5.$bak_from_name.md5"                                 #变量为当天所计算出来的所要备份目录的MD5列表(此变量的当天是脚本执行之后的当前,在脚本才开始执行的时候,该变量所指定的文件为前一天备份目录的MD5列表)

if[!-d $bak_to_dir ]
then
mkdir $bak_from_dir
fi

find $bak_from_dir | xargs -I {} md5sum {}>> $new_md5_file 2>/dev/null
cp -a $bak_from_dir $bak_to_dir

if[ $?-eq 0]
then
echo "$bak_from_dir directory to $bak_to_dir backup successfull"
fi

new_md5_error=`md5sum -c $new_md5_file 2>/dev/null | awk ‘$2 !~ "ok"‘ | wc -l`               #变量为当天所要备份目录的MD5发生变化的条目总数
new_md5_ok=`md5sum -c $new_md5_file 2>/dev/null | awk ‘$2 !~ "ok"‘ | wc -l`                  #变量为当天所要备份目录的MD5未发生变化的条目总数
old_md5_error=`md5sum -c $old_md5_file 2>/dev/null | awk ‘$2 !~ "ok"‘ | wc -l`               #变量为前一天所要备份目录的MD5发生变化的条目总数
old_md5_ok=`md5sum -c $old_md5_file 2>/dev/null | awk ‘$2 !~ "ok"‘ | wc -l`                  #变量为前一天所要备份目录的MD5未发生变化的条目总数

if[ $new_md5_error == $old_md5_error -a $new_md5_ok == $old_md5_ok ]
then
echo "Because today and yesterday‘s content is the same, delete the backup content of yesterday"
rm -rf $day_bak_dir $new_md5_file
fi

echo | cp $new_md5_file $old_md5_file &>/dev/null
  • 该脚本前一段主要是搜寻所要备份目录的每一个文件的md5值,然后记录到当天的所要备份目录的MD5列表文件中,然后执行备份
  • 该脚本后一段(执行备份之后的部分)主要是根据比对当天的所要备份目录的MD5列表文件和前一天的所要备份目录的MD5列表文件中未变化和变化部分的条目值是否相同,来判断所要备份目录中的文件是否有发生变化,以此来决定是否删除前一天的备份


脚本下载

自动备份/etc目录

标签:

原文地址:http://www.cnblogs.com/vforbox/p/5101674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!