검색결과 리스트
글
회사 svn이 워낙 중요한 데이터가 있다보니 백업의 중요도가 상당하다...
그래서 매일 백업을 해 특정 저장 공간에 보관하려고 하는데 쓰려고 간단하게 쉘을 하나 작성하였다.
대단한건 아니고 svn 저장소를 통째로 압축하여 전달하는 역할이다. 이 쉘 스크립트는 이전 회사에서 부터 써오던 쉘스크립트를 내가 맘데로 변형 발전시켜온 것인데...토대가 되는 쉘 스크립트의 저작권은 아마도 전 회사에 귀속되어있을테니 이거 가지고 '너 고소!' 하면 할말은 없을지도....
설마 그정도로 쓰래기 짓을 하겠냐 하는 분도 있겠지만 지금 하는 행태로 봐선 쓰래기들이 쓰래기짓하고 있음.
#!/bin/sh # 변수 등록 _DATE=`date '+%Y%m%d'` _LOG_TIME=`date '+[%Y/%m/%d %H:%M:%S]'` _EX_DAY=2 _BACKUP_DIR=$HOME/BACKUP _LOG_DIR=$_BACKUP_DIR _BACKUP_FILE=svn_backup _LOGFILE=$_LOG_DIR/svn_backup.log _LOGGING() { echo "[`date '+%Y/%m/%d %H:%M:%S'`] $*" >> $_LOGFILE } if [ ! -d $_BACKUP_DIR -a ! -x $_BACKUP_DIR ] then echo "mkdir $_BACKUP_DIR" mkdir $_BACKUP_DIR if [ $? -ne 0 ] then echo "Error : mkdir $_BACKUP_DIR" >&2 exit 1; fi fi if [ ! -d $_LOG_DIR -a ! -x $_LOG_DIR ] then echo "mkdir $_LOG_DIR" mkdir $_LOG_DIR if [ $? -ne 0 ] then echo "Error : mkdir $_LOG_DIR" >&2 exit 1; fi fi # 기간이 만료된 백업 삭제 find $_BACKUP_DIR -type f -name "${_BACKUP_FILE}_*" -mtime +$_EX_DAY -exec rm -f {} \; # 백업 시작 _LOGGING "SVN BACKUP START!" killall svnserve >> $_LOGFILE 2>&1 if [ $? -eq 0 ] then _LOGGING "SVN SERVICE STOP SUCCESS!" else _LOGGING "WARNING! SVN SERVICE NOT RUNNING." #exit 1; fi ps -ef | grep -v grep | grep "svnserve -d" >> $_LOGFILE 2>&1 if [ ! $? -eq 1 ] then _LOGGING "WARNING! DETECT SVNSERVE PROCESS." #exit 1; fi #tar -cf - $HOME/svnrepo | gzip -c - > ${_BACKUP_DIR}/${_BACKUP_FILE}_${_DATE}.tar.gz if [ $? -eq 0 ] then _LOGGING "SVN BACKUP SUCCESS!" else _LOGGING "WARNING! SOME PROBLEM IN BACKUP JOB." exit 1; fi _LOGGING "SEND TO REPOSITORY!" scp ${_BACKUP_DIR}/${_BACKUP_FILE}_${_DATE}.tar.gz svn@dev2:~/BACKUP/. if [ $? -eq 0 ] then _LOGGING "SEND SUCCESS!" else _LOGGING "WARNING! FAIL TO SEND BACKUP." #exit 1; fi svnserve -d -r /home/svn/svnrepo if [ $? -eq 0 ] then _LOGGING "SVN SERVICE START SUCCESS!" else _LOGGING "WARNING! FAIL TO START SVN SERVICE." #exit 1; fi _LOGGING "SVN BACKUP END!"
저장소 장비에서는 특정 기간이 만료된 백업을 제거하는 쉘을 수행해야 한다.
_EX_DAY=7 _BACKUP_DIR=$HOME/BACKUP _BACKUP_FILE=svn_backup # 일주일이 지난 백업 삭제 find $_BACKUP_DIR -type f -name "${_BACKUP_FILE}_*" -mtime +$_EX_DAY -exec rm -f {} \;
이제 crontab에 등록해보자. crontab에 최빈시에 백업이 수행되도록 등록만 하면 된다. 사내 장비는 아직 특별한 것이 없으므로 임의로 새벽 1시에 수행되게 설정하였다.
0 1 * * * ~/BACKUP/svn_backup.sh
'운영체제, 환경 > 쉘 환경' 카테고리의 다른 글
oracle sqlldr 용ctl(control file) 파일 만들기 (0) | 2016.06.22 |
---|---|
[Fedora Core] dnf를 이용해서 vim 설치하기 (0) | 2015.10.15 |
[Fedora Core] runlevel 변경하기 (0) | 2015.10.15 |
rsa를 이용한 원격 로그인 및 그외의 secure 툴 이용하기 (0) | 2013.12.12 |
vim 창분할 설정 (0) | 2013.10.11 |
RECENT COMMENT