Linux自动备份脚本

[root@nolinuxscripts]#catauto_bak.sh#!/bin/bash##Thisscriptisusedtoautomaticallybackupthespecifieddirectory,andjudgment,andwhetherthepreviousbackup#Writtenbysunsky#Mail:274546888@qq.com#Date:2014-8-1623:00:00#bak_from_name=”etc”bak_from_dir=”/etc”bak_to_dir_par=”/var/backups”bak_dir=”${bak_to_dir_par}${bak_from_dir}.$(date+%Y%m%d)”yes_bak_dir=”${bak_to_dir_par}${bak_from_dir}.$(date-d’-1day’+%Y%m%d)”new_sum_file=”${bak_to_dir_par}/new_sum.$bak_from_name.$(date+%Y%m%d)”old_sum_file=”${bak_to_dir_par}/old_sum.$bak_from_name.md5″if[!-d$bak_to_dir_par];thenmkdir$bak_to_dir_parfifind$bak_from_dir|xargs-I{}md5sum{}>>$new_sum_file2>/dev/nullcp-a$bak_from_dir$bak_dir&&echo”$bak_from_dirdirectoryto$bak_dirdirectorybackupsuccessfully”new_sum_error=`md5sum-c$new_sum_file2>/dev/null|awk’$2!~”OK”‘|wc-l`new_sum_ok=`md5sum-c$new_sum_file2>/dev/null|awk’$2~”OK”‘|wc-l`old_sum_error=`md5sum-c$old_sum_file2>/dev/null|awk’$2!~”OK”‘|wc-l`old_sum_ok=`md5sum-c$old_sum_file2>/dev/null|awk’$2~”OK”‘|wc-l`if[$new_sum_error==$old_sum_error-a$new_sum_ok==$old_sum_ok];thenecho”Becausetodayandyesterday’scontentisthesame,deletethebackupcontentofyesterday”rm-rf$yes_bak_dir$new_sum_filefiecho|cp$new_sum_file$old_sum_file&>/dev/null

针对以上脚本的简单描述:

本脚本将所有涉及到的目录都声明了变量,,这样子就方便脚本功能的灵活收缩。无论是变更所要备份的目录项还是变更备份到的目录项都很另外。由于题目要求不采用打包的方式备份,因此本脚本不涉及对脚本的打包管理。

bak_from_name变量为所要备份的目录名bak_from_dir变量为所要备份的目录路径bak_to_dir_par变量为所要备份到的目录的父(上级)目录路径bak_dir变量为所要备份到的目录路径yes_bak_dir变量为所要备份目录前一天的备份目录路径new_sum_file变量为当天所计算出来的所要备份目录的MD5列表old_sum_file变量为当天所计算出来的所要备份目录的MD5列表(此变量的当天是脚本执行之后的当前,在脚本才开始执行的时候,该变量所指定的文件为前一天备份目录的MD5列表)new_sum_error变量为当天所要备份目录的MD5发生变化的条目总数new_sum_ok变量为当天所要备份目录的MD5未发生变化的条目总数old_sum_error变量为前一天所要备份目录的MD5发生变化的条目总数old_sum_ok变量为前一天所要备份目录的MD5未发生变化的条目总数

该脚本前一段主要是搜寻所要备份目录的每一个文件的md5值,然后记录到当天的所要备份目录的MD5列表文件中,然后执行备份。

该脚本后一段(执行备份之后的部分)主要是根据比对当天的所要备份目录的MD5列表文件和前一天的所要备份目录的MD5列表文件中未变化和变化部分的条目值是否相同,来判断所要备份目录中的文件是否有发生变化,以此来决定是否删除前一天的备份。

OK!本文到此结束,希望能对51博友有所帮助!

本文出自 “Not Only Linux” 博客,请务必保留此出处

你并不一定会从此拥有更美好的人生,

Linux自动备份脚本

相关文章:

你感兴趣的文章:

标签云: