2009/12/15 - [리눅스] - Redmine VPS 서버 구축
에 사용할 자동 백업을 세팅하였습니다.
cron을 사용하려면 계정별 세팅을 하거나 crontab을 씁니다.
제 경우는 /var/spool/cron 에 계정별 설정 파일들이 있더군요 -> 그냥 편집
해당 시간에 명령 혹은 스크립트를 실행 해줍니다. 매우 간단하죠
cron 스크립트는 다음과 같습니다.
토요일 6시 정각에 백업 스크립트를 실행 합니다.
#분 시 일 월 요일(월=1 화=2 ... 일=7)
0 6 * * 6 /백업경로/bkscript.sh
0 6 * * 6 /백업경로/bkscript.sh
혹시 cron이 동작 안할까봐... #crond restart 합니다.
백업 스크립트는 다음과 같습니다.
1. Redmine DB 백업
2. Redmine 첨부 파일 미러(?) 구동 - 이건 백업의 의미가 좀 약한듯.... 나중에 보완...
3. 모든 SVN Repository 백업
4. 3 개월 경과한 백업 파일 삭제
5. 백업파일은 gzip 사용
6. 복구 방법은 잊어먹을까바 적어두기
#!/bin/sh
# Redmine DB
mysqldump -uroot -p암호 redmine | gzip > /백업경로/redmine/redmine_`date +%y_%m_%d`.gz
# Redmine Files
rsync -avz /레드마인경로/files /백업경로
# SVN Repository
cd /SVN경로
for repo in *;do
if [[ -d $repo ]];then
svnadmin dump "/SVN경로/$repo" | gzip > "/백업경로/svn/$repo"_`date +%y%m%d`.svn.gz
fi
done
# Delete Old File (3 Month)
find /백업경로/svn -name *.svn.gz -mtime +90 -delete
find /백업경로/redmine -name *.gz -mtime +90 -delete
# Restore : mysql -uroot -p DB NAME < FILE NAME
# Unzip : gunzip sample.svn.gz
# Restore : svnadmin create sample
svnadmin load sample --force-uuid < sample.dump
# 특정 리비전 덤프 : svnadmin dump 이름 -r 리비전번호 --incremental > 덤프이름
# 범위 리비전 덤프 : svnadmin dump 이름 -r 리비전번호:리비전번호 --incremental > 덤프이름
# 최근 리비전 덤프 : svnadmin dump 이름 -r Head --incremental > 덤프이름
# Redmine DB
mysqldump -uroot -p암호 redmine | gzip > /백업경로/redmine/redmine_`date +%y_%m_%d`.gz
# Redmine Files
rsync -avz /레드마인경로/files /백업경로
# SVN Repository
cd /SVN경로
for repo in *;do
if [[ -d $repo ]];then
svnadmin dump "/SVN경로/$repo" | gzip > "/백업경로/svn/$repo"_`date +%y%m%d`.svn.gz
fi
done
# Delete Old File (3 Month)
find /백업경로/svn -name *.svn.gz -mtime +90 -delete
find /백업경로/redmine -name *.gz -mtime +90 -delete
# Restore : mysql -uroot -p DB NAME < FILE NAME
# Unzip : gunzip sample.svn.gz
# Restore : svnadmin create sample
svnadmin load sample --force-uuid < sample.dump
# 특정 리비전 덤프 : svnadmin dump 이름 -r 리비전번호 --incremental > 덤프이름
# 범위 리비전 덤프 : svnadmin dump 이름 -r 리비전번호:리비전번호 --incremental > 덤프이름
# 최근 리비전 덤프 : svnadmin dump 이름 -r Head --incremental > 덤프이름
이제 매주 토요일 6시에 /백업경로/svn, /백업경로/redmine, /백업경로/files 에 각각 데이터가 백업됩니다.
회사 업무도 아닌 개인적인 코드들이라 1주일 간격으로 백업해도 무난하네요.
추가로 tar.gz 압축 풀기
tar xvzf filename.tar.gz