[김성민]님이 남기신 글:
>안녕하세요,
>
>산이님 설명 보고나니 이해가 되었습니다.
>왜 안되나... 며칠을 이리저리 바꿔보기도 하고 했었죠.
>감사합니다...
>
>아래는 앞전에 알려주신 내용대로 수정한 상태 입니다.
>
>#!/bin/bash
>
>export Today="`date '+%y-%m-%d'`"
>LOGdir="/usr/local/apache/logs"
>
>backup_dir="/backup/data"
>mkdir -p ${backup_dir}/$Today
>
>tar cfpz ${backup_dir}/${Today}/$Today-usr.local.mysql.tar.gz /usr/local/mysql
>tar cfpz ${backup_dir}/${Today}/$Today-usr.local.apache.tar.gz /usr/local/apache
>tar cfpz ${backup_dir}/${Today}/$Today-home.tar.gz /home
>tar cfpz ${backup_dir}/${Today}/$Today-etc.tar.gz /etc
>
>rm -f ${LOGdir}/*_log
>/usr/bin/killall -HUP httpd
>
>exit 0
>
>이러면 ${backup_dir} 인 /backup/data 에 아래와 같이 디렉토리와 함께 생성이 됩니다.
>
>03-04-20 03-04-21 03-04-22 03-04-23 03-04-24 03-04-25 03-04-26
>
>계속 증가하면 안되므로 전에것 부터 하루에 한번씩 한 날짜씩 삭제하고 있거든요?
>7일분만 놔두고 8일째분이 생성되면 먼저 생성된 1일분을 수동으로 삭제하고 있습니다.
>
>이걸 어떻게 자동화 할수는 없을까요?
>
>날짜 계산을 해야 할것 같은데 산이님 아시다 시피 제가 계산하는 것은 좀 head.. 에서 ㅋㅋ
>글구, 제일 중요한건 리눅스상에서 스크립트를 작성 못한다는 거죠. 헤헤..
>
>스크립트 작성법 조만간 기초공부를 돌입해야 할듯...
이와 같이 오늘 날짜를 기준으로 7일 이전의 내용을 삭제하려면
어떤 시간의 비교가 있어야 합니다.
그런데
여기에서는 시간이 지나면 순차적으로 디렉토리가 생성되고
그 디렉토리는 생성된 시간이 디렉토리에 기록되므로 이것을
이용하면 될것 같군요.
즉 ls 명령어에서 -t 옵션을 사용해서 리스트를 순차적으로 뽑고
최근 8번째부터 지우면 될것 같군요.
## 제일 마지막부분에 코딩
-----------------------------------------------
dirlists=`/bin/ls -t $backup_dir 2>/dev/null`
i=1
for dir in $dirlists ; do
if [ "$i" -gt 7 ] ; then
rm -rf $dir
fi
$i=$(($i+1))
done
exit 0
-----------------------------------------------
rm -rf $dir 를 먼저 적용하지 말고
echo "rm -rf $dir"
로 먼저 테스트해 보시길 바랍니다.
위의 스크립트는 항상 7개의 디렉토리만 남겨놓도록
하는 내용입니다.
원래 시간비교하고는 성격이 다름...
>
>좀 알려주심 고마울것 같은데... 이거 맨날 뭐뭐 해달라는 거 같아서 마음이 참으로 무겁군요...
>동네에 있음 쏘주라도 대접하고 싶구만요..
>파일로 라도 받으세요~
헙... 소주...^.^ |