특정 파일 확장자만 백업 하는 스크립트(bash linux php backup)
배쉬쉘에서 사용하는 간단한 백업 스크립트 입니다.
매일 스케줄러에 의해서 실행이 되면 일자로 디렉토리를 만들고 파일을 복사합니다.
백엔드에서 중요한 확장자인것을 매일 백업 받아 관리가 필요할때 사용하면 좋습니다.
#!/bin/sh
# 숫자가 아닌것을 사용할 경우 언어 확인
DATE_DAY=`date +%d`
DATEWEEK=`date +%u`
HOSTNAME=`hostname -s`
#
DIR_SRC=/www/html/src
DIR_DST=/files/backup/${DATE_DAY}
# 특정 일자 지난것은 삭제 한다.
# find /www/data/*.txt -mtime +7 -exec rm {} \;
# 삭제하고 다시 복사
rm -rf /files/backup/${DATE_DAY}
mkdir -p ${DIR_DST}
# 1) 소유자가 웹서버인 디렉토리 목록 별도 보관
find /www/html/ -user apache -type d > ${DIR_DST}/apache_dir_list.txt
# 2) 중요 확장자 파일복사
# > 필요하다면 cp 대신 rsync -a 옵션을 사용해도 된다.
if [ $DATEWEEK = "1" -o $DATEWEEK = "3" -o $DATEWEEK = "5" -o $DATEWEEK = "7" ]
then
# find /www/html/ \( -name "*.php" \)
find /www/html/ \( -name "*.php" -o -name "*.sh" -o -name "*.css" -o -name "*.js" -o -name "*.html" \) -exec cp -a --parents {} ${DIR_DST} \;
elif [ $DATEWEEK = "2" -o $DATEWEEK = "4" -o $DATEWEEK = "6" ]
then
find /www/html/ \( -name "*.php" -o -name "*.sh" -o -name "*.css" -o -name "*.js" \) -exec cp -a --parents {} ${DIR_DST} \;
fi
# 3) 이미지 목록은 별도 백업
# 4) 백업 목록 관리
기본 원리는 find로 특정 확장자를 찾아 그것만 복사를 하는 방식입니다.
파일이 많으면 약간의 부하가 있겠네요. 변경된 파일만 복사하는 방식도 아닌 무조건 복사하는 방식
생각해보니 rsync 옵션을 이용해서 관리하는 방법도 있을듯 합니다. 예외 옵션이 있는데 그것을 활용하게 되면 다시 한번 정리가 필요할듯!!