파일 정기 자동 백업 스 크 립 트

3340 단어 linuxshellbackup
이것 은 디 렉 터 리 정기 백업 파일 입 니 다. MD5 검 사 를 통 해 오늘 과 어제 디 렉 터 리 와 파일 이 변경 되 었 는 지, 없 으 면 어제 백업 디 렉 터 리 를 삭제 합 니 다.디스크 공간의 소 모 를 줄이다.일부 백업 디 렉 터 리 가 매우 클 수 있 습 니 다. 우 리 는 일반적으로 그 중의 한 가지 파일 을 수정 하 는 것 을 말 합 니 다. 우 리 는 지정 한 파일 형식 을 선택 하여 장기 적 으로 변 경 된 파일 을 백업 할 수 있 습 니 다.이 스 크 립 트 는 함 수 를 추가 하 는 등 함수 방법 으로 지정 한 형식 파일 을 백업 할 지 여 부 를 선택 할 수 있 습 니 다.백업 을 선택 하 는 것 은 날짜 에 따라 계산 하 는 것 이 아니 라 시간 까지 정확 할 수 있 습 니 다. 물론 crontab 를 추가 해 야 합 니 다.하하, 여기 한 블 로 거 aaao 가 제공 한 MD5 검증 아이디어 에 감 사 드 립 니 다.
#!/bin/bash
#written  by  dqznn88
#maill:   [email protected]
#date: 2014-09-23 
#
DSTDIR="/backup/tomcat_$(date  +%Y%m%d)/"
POSTFIX="xml"
md5_sum_dir="/backup/tomcat/sum/"
md5_in="${DIR}"
md5_new_sum_file="${md5_sum_dir}tomcat_md5_sum.$(date  +%Y%m%d)"
md5_old_sum_file="${md5_sum_dir}tomcat_md5_sum_old"
#############################################################
# backup  directory
#       for DIRNAME  in  $(find   $DIR   -type  d )
#       do
#       #echo "dirctory name is  $DIRNAME"
#       FULLDIR=${DIRNAME/$DIR/$DSTDIR}
#       if [ ! -d  $FULLDIR   ];then
#               mkdir -p  $FULLDIR
#       fi
#       done
#       echo "backup  $DIR  directory specified  $POSTFIX"
##################################################################
if  [  ! -d  $DSTDIR ];then
cp -a  $DIR   $DSTDIR  && echo "$DIR directory  to $DSTDIR backup successfully"
################################################################
if [ ! -d ${md5_sum_dir}  ];then
        mkdir  -p  ${md5_sum_dir}
fi
find ${md5_in}  |  xargs -I {}  md5sum {} >>  $md5_new_sum_file  2>/dev/null  &&  echo "directory  md5 sum "
new_sum_ok=`md5sum -c  ${md5_new_sum_file} 2>/dev/null | awk '$2~"OK"' |wc -l`
old_sum_ok=`md5sum -c  ${md5_old_sum_file} 2>/dev/null | awk '$2~"OK"' |wc -l`
if [ ${old_sum_ok} ==  ${new_sum_ok}   ];then
        echo "because today and  yesterday content is the same,delete yesterday centent!"
        cp  $md5_new_sum_file   $md5_old_sum_file  -r
        rm  -fr  ${md5_in_yer} && rm -fr ${md5_new_sum_file}    &&  echo  "delete  old  file "
fi
##################################################################
#the  first  execute this  script,create  'md5_old_sum_file' file,afterwards,everytime  change  $DSTDIR  directory   backup 'sum_file' file.
        cp  $md5_new_sum_file   $md5_old_sum_file  -r  &>/dev/null

다음은 변수 설명 입 니 다.
md5_sum_dir MD5 검사 값 이 저 장 된 디 렉 터 리
md5_new_sum_file 새로 생 성 된 각 백업 파일 MD5 값 파일 저장
md5_old_sum_file 이전에 백업 한 MD5 값 파일
new_sum_ok 방금 생 성 된 MD5 파일 은 백업 대상 파일 을 검사 하고 몇 개 는 ok 을 검사 하 는 것 입 니 다.
old_sum_ok 어제 생 성 된 MD5 파일 은 백업 한 대상 파일 을 검사 하 는 동시에 ok 을 검사 하 는 것 이 몇 개 기록 되 어 있 습 니 다. 대상 파일 이 바 뀌 었 다 면 검사 결 과 는 ok 이 아 닐 것 입 니 다. 또한 새로 생 성 되 고 삭 제 된 파일 은 ok 의 개수 가 다 를 수 있 습 니 다.
if [ ${old_sum_ok} ==  ${new_sum_ok}   ] 비 교 를 통 해 파일 이 바 뀌 었 는 지, 파일 을 새로 추가 하고 삭 제 했 는 지 확인 합 니 다.
여기 왜 두 개가 있 는 지 설명해 주세요.
 cp  $md5_new_sum_file   $md5_old_sum_file  -r 스 크 립 트 를 실행 할 때마다 MD5 old sum file 을 새로 고 칩 니 다. 파일 의 정 보 는 다음 검증 을 유지 할 때 반드시 어제 의 검증 파일 입 니 다. 사실 위의 cp 를 실 행 했 습 니 다. 아래 의 cp 는 실행 되 지 않 을 것 입 니 다.
        더 좋 은 생각 이 있 으 면 메 시 지 를 남 겨 주세요. 감사합니다!!

좋은 웹페이지 즐겨찾기