백업방법, 특별한 명령어 없이 자동으로 로테이션 되도록.
기본적으로 find 명령어를 사용해서 며칠지난 백업 파일을 주기적으로 지우는 방법을 사용하는데,find 명령의 권한이 없다!
그래서 고민을 했지… php에서 파일권한 777줘서 백업/삭제를 할 것인가?
그래서 다시 고민했지 백업을 하는 이유와 백업을 남길 여유날짜.
백업파일의 목적은 DB의 특정 테이블 백업용. 백업파일은 약 7일정도만 남기면 될 것 같음
여기까지 사설.
백업파일명을
- 분 기준 : 1시간 마다 로테이션
- 시간 기준 : 하루마다 로테이션
- 요일기준 : 7일마다 로테이션
- 일 기준 : 28~31일마다 로테이션
- 월+일 기준 : 1년 로테이션
위 기준을 넣고 백업 파일 명을 만들면,
자동으로 기준의 날짜만큼 로테이션이 됨.
backup_{기준}.bak 처럼 파일명을 만들면 되겠지.
#예제 리눅스에서 mysqldump로 특정 DB의 특정 테이블을 sql로 백업하기. (7일 단위 백업)
일주일 뺑뺑이로 백업
WW=$(date +%w) ; 0~6의 요일값(0은 일요일) mysqldump -u{계정} -p{비번} {DB명} {테이블명} > {백업폴더}/backup_${WW}.sql
실행되면 해당폴더에 backup_0.sql backup_1.sql … backup_6.sql
처럼 파일이 생성됨.(물론 이미 있다면 덮어씌움)
예제
일주일 뺑뺑이로 백업
WW=$(date +%w)
cd /XXXXX/dbBackup/
/usr/local/mysql/bin/mysqldump -uXXXXXX -pXXXXXX XXXX sdgd_comment > sdgd_comment_${WW}.sql /usr/local/mysql/bin/mysqldump -uXXXXXX -pXXXXXX XXXX sdgd_unit_add > sdgd_unit_add_${WW}.sql
#이 밑은 압축처리 tar cvfzp sdgd_comment_${WW}.sql.tar.gz sdgd_comment_${WW}.sql tar cvfzp sdgd_unit_add_${WW}.sql.tar.gz sdgd_unit_add_${WW}.sql rm -f sdgd_comment_${WW}.sql rm -f sdgd_unit_add_${WW}.sql