백업방법, 특별한 명령어 없이 자동으로 로테이션 되도록.

기본적으로 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


댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
목록형 📅 달력형