본문 바로가기

프로젝트 설정/기타

[Linux] 예약/반복 작업 (crontab/script) + mysqldump

반응형

상세https://24hours-beginner.tistory.com/210?category=823198 

 

[Linux] 예약/반복 작업 (crontab/Shell Script) (ubuntu)

1. Shell Script 작성 (.sh) vim / vi / nano 등 본인이 편한 명령어를 통해 파일 생성 후 작성(수정) vim test.sh shell script 작성 / 저장 #!/bin/bash ############################# # testForCrontab.sh # a..

24hours-beginner.tistory.com

실행할 작업(스크립트를 생성)

  • vim [name].sh
#! bin/sh   #! 스크립트를 실행할 때 dash쉘을 이용한다

cd ~/works/backup/
DATE=${date +%Y%m%d}

# 지정 DB를 ${DATE}_db.sql로 저장
mysqldump --defaults-file=".my.cnf" [DATABASE_NAME] > ${DATE}_db.sql
# 생성한 파일을 압축 tar -zcvf(압축형식) [압축 결과물 이름] [압축할 파일]
tar -zcvf ${DATE}_db.tar.gz ${DATE}_db.sql
# 압축 했으니 sql파일 삭제
rm ${DATE}_db.sql

 

crontab에 등록 크론탭 편집기로 이동

  • crontab -e

생성한 script 등록

  1. # 분(0~59) 시간(0~23) 일(1~31) 월(1~12) 요일(0~7) 0=sunday # */1 * * * * => 매분 실행 # 0 1 * * * => 매일 01시에 실행 [a b c d e] ~/works/backup/[name].sh # 3일이 지난 파일 삭제 # 해당 경로에 있는 .tar.gz 확장자이고 3일이 지난 파일 삭제 # -mtime +n n일이 지난 -mmin +n n분이 지난 0 1 * * * find ~/works/backup/ -name "*.tar.gz" -mtime +3 -delete

 


+) 잡다한 에러

  • script의 #!가 제대로 인식되지 않음script파일의 #!가 제대로 인식되지 않아 crontab의 sh파일이 정상적으로 실행되지 않는 문제가 있었다.위와 같이 직접 실행할 쉘을 지정해서 해결 함.
  • [a b c d e] ~/works/backup/[name].sh [a b c d e] dash ~/works/backup/[name].sh
  • 스크립트의 DATE 에러나한테 일어난 에러는 아니지만 {date +%Y%m%d}로 인해 실행이 안되는 사람도 있다고 본적이 있다.위와 같이 '\'를 추가하면 된다고 함.
  • DATE = {date + %Y%m%d} DATE = {date + \%Y\%m\%d}
반응형