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

less than 1 minute read

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


🔗original-link

Updated: