백업 머 신 백업 파일 처리

3924 단어 백업shell
각 시스템 은 매일 한 번 씩 완전히 백업 하고 백업 파일 은 날짜 에 따라 이름 을 짓 는 다.서로 다른 시스템 의 백업 파일 은 서로 다른 디 렉 터 리 에 놓 여 있 고 같은 시스템 은 매일 다른 백업 을 같은 디 렉 터 리 에 놓 습 니 다.
그래서 매일 백업 파일 을 정리 해 야 합 니 다.그래서 셸 스 크 립 트 를 써 서 하루 에 한 번 씩 실 행 했 습 니 다.
스 크 립 트 프로그램의 작업 방향 은:
0. 대상 디 렉 터 리 에 있 는 파일 을 읽 습 니 다. 오늘 백업 파일 이 없 으 면 보고 서 를 처리 하지 않 고 인쇄 합 니 다.
1. 대상 디 렉 터 리 의 파일 수 를 읽 고 3 개 보다 적 으 면 처리 하지 않 으 며 보고 서 를 인쇄 합 니 다.3 개 이상 이면, 2 단 계 를 수행한다.
2. 파일 크기 를 비교 하고 3 일 전의 백업 파일 크기 가 2 일 전의 백업 파일 크기 보다 크 면 처리 하지 않 고 보고 서 를 출력 합 니 다.3 일 전의 백업 파일 이 2 일 전의 파일 보다 작 거나 같 으 면 3 일 전의 백업 파일 을 삭제 합 니 다.
3. 디 렉 터 리 아래 파일 의 수 를 읽 고 인쇄 합 니 다.
4. 모든 대상 디 렉 터 리 는 위의 프로그램 을 실행 합 니 다.
#!/bin/bash
path[1]="/home/confluence/"
path[2]="/home/database/mms"
path[3]="/home/database/oa"
path[4]="/home/mms/"
path[5]="/home/svn/jira"
path[6]="/home/svn/jira_attach"
path[7]="/home/svn/jira_mysql"
path[8]="/home/svn/svn"
today=`date +%Y-%m-%d`
date_2day_ago=`date -d -2day +%Y-%m-%d`
date_3day_ago=`date -d -3day +%Y-%m-%d`
echo today is $today
for((i=1;i<=8;i++))
do 
    echo " "                                                                       #start_1
    function size_compare {
    if [ -f ${path[i]}/*$date_3day_ago* ];then                                        #path
        echo ${path[i]}/*$date_3day_ago* OK!                                           #path
    else
        echo ${path[i]}/*$date_3day_ago* not exist!                                   #path
        continue
    fi
    name=`ls ${path[i]}/*$date_3day_ago*`                                             #path
    #echo The will delete file name is $name
    if [ -f ${path[i]}/*$date_2day_ago* ];then                                         #path
        echo ${path[i]}/*$date_2day_ago* OK!                                            #path
    else
        echo ${path[i]}/*$date_2day_ago* not exist!                                      #path
        continue
    fi
    name1=`ls ${path[i]}/*$date_2day_ago*`                                           #path
    #echo it will compare the size with $name1
    NAME=`ls -l $name |awk '{print $9}'`
    SIZE=`ls -l $name |awk '{print $5}'`
    NAME1=`ls -l $name1 |awk '{print $9}'`
    SIZE1=`ls -l $name1 |awk '{print $5}'`
    echo $NAME size is $SIZE
    echo $NAME1 size is $SIZE1
    if [ $SIZE -le $SIZE1 ];then
`       rm -f $NAME`
        echo $NAME Delete Successful!
    else
        echo sizebad! 
        fi
}
############ today backup file exist or not!#####################
if [ -f ${path[i]}/*$today* ];then                                     #path
    echo   today ${path[i]}/*$today* exist!                             #path
else
    echo   Today ${path[i]}/*$today* not exist!                        #path
    continue
fi
numbers=`find ${path[i]} -type f |wc -l`                             #path
if [ $numbers -ge 4 ];then
    echo ${path[i]} have $numbers more than 3!                                       #path
    size_compare #continue
else
    echo ${path[i]} numbers less 4!                                        #warning
fi
done                                                                #end_1
echo " "
for ((i=1;i<=8;i++))                                              #start_2 
do
    #test=`ll |grep ".sql$" |wc -l`
    numbers=`find ${path[i]} -type f |wc -l`
    #echo There are $numbers files in the current directory!
    echo ${path[i]} have $numbers files
done                                                                 #end_2
echo " "
echo " "
 
#ls -l /home/src/ |sed '1d'| awk '{print $5 "\t" $9}' > a.txt
#sed -n '2p' a.txt
#size=`sed -n '2p' a.txt |awk '{print $1}'`
#name=`sed -n '2p' a.txt |awk '{print $2}'`
#echo $name $size
#rm -f a.txt

좋은 웹페이지 즐겨찾기