[Linux] 백업스크립트 & CRON

H.yeong·2022년 11월 3일
1
post-thumbnail

Linux 환경에서 백업스크립트 작성 및 crontab 설정 방법

구글링을 통해 알아낸 방법들을 정리하고 이해한대로 기록함. 틀릴 수도 있음.

📌 백업파일을 저장할 폴더 생성.

# mkdir backup 		// 파일명 
  • 생성한 파일에 권한 설정
# chmod 755 backup 		// 7-소유자는 읽기,쓰기,실행 가능 / 5 - 그 외 사용자는 읽기,실행만 가능

📌 스크립트 작성

# vi /root/backup.sh	// root 폴더에 backup.sh 라는 파일을 생성하여 편집모드로 실행

insert 모드로 변경하여 스크립트 작성

#!/bin/sh
NOW=`date +"%Y%m%d"`
DELDAY=`date --date '5 days ago' +"%Y%m%d"`
tar zcvfp /home/backup/example_bak_${NOW}.tar.gz /home/target/
/usr/bin/mysqldump -u계정 -p비밀번호 DB명 > /home/backup/example_db_baK_${NOW}.sql
chown root.root /home/backup/example_${NOW}.tar.gz
chown root.root /home/backup/example_db_bak_${NOW}.sql
chmod 755 /home/backup/example_bak_${NOW}.tar.gz
chmod 755 /home/backup/example_db_bak_${NOW}.sql
rm -Rf /home/backup/example_db_bak_${DELDAY}.sql
rm -Rf /home/backup/example_bak_${DELDAY}.tar.gz

#스크립트 내에서 사용할 변수

# 파일명에 붙여서 백업날짜를 표시할거임

NOW=`date +"%Y%m%d"`	#현재날짜
DELDAY=`date --date '5 days ago' +"%Y%m%d"`	#현재날짜로부터 5일전

#백업대상

tar zcvfp /home/backup/example_bak_${NOW}.tar.gz /home/target/
# tar zcvfp /home/... : 저장할 경로와 파일명
# /home/target : 압축하여 저장할 대상 파일이 있는 경로


# 백업할 DB :: DB 접속 할때 사용하는 계정과 비밀번호, 백업할 DB명 > 백업파일 저장할 경로와 저장명
/usr/bin/mysqldump -u계정 -p비밀번호 DB명 > /home/backup/example_db_baK_${NOW}.sql

#권한설정

#소유권설정
chown root.root /home/backup/example_${NOW}.tar.gz
chown root.root /home/backup/example_db_bak_${NOW}.sql

# 읽기, 쓰기, 실행 권한 7-소유자만 모든 행동 가능, 5- 그 외 사용자는 읽기, 실행만 가능
chmod 755 /home/backup/example_bak_${NOW}.tar.gz
chmod 755 /home/backup/example_db_bak_${NOW}.sql

#삭제


# 5일전 백업파일은 삭제
rm -Rf /home/backup/example_db_bak_${DELDAY}.sql
rm -Rf /home/backup/example_bak_${DELDAY}.tar.gz

스크립트 작성 후에 실행권한만 부여

# chmod 100 /root/bakcup.sh

📌 스케줄러 crontab 설정

백업 스크립트를 언제 실행시킬지 시간을 정해주는 설정창

#crontab -e  // 설정화면으로 이동

GNU nano 4.8 을 사용 중이라 아래와 같은 화면이 출력되었다.
지워도 무방한 내용인듯....

별도의 단축키 입력없이 가장 윗줄부터 작성이 가능하다.

작성예시

# *         *        *       *        *
# 분(0-59)  시간(0-23)  일(1-31)  월(1-12)   요일(0-7)
* * * * * /home/backup.sh

## example
# 매주 일요일 오전 2시 00분에 /home/backup.sh 실행
0 2 * * 0 /home/test.sh

# 매일 오전 2시, 오후 2시에 /home/backup.sh 실행
0 2,14 * * * /home/backup.sh

# 매 10분마다 /home/backup.sh 실행
*/10 * * * * /home/backup.sh

# 매일 자정 0분부터 30분까지 /home/backup.sh 실행
0-13 0 * * * /home/backup.sh

crontab 내부에서 위와 같은 형식으로 작성하여 저장하면 자동백업이 시작되는데
설정 후 아래 명령어로 cron을 재시작해야함.

# service cron restart

+백업 파일을 윈도우에서 압축해제해야할 경우!

백업파일이 있는 폴더에서 cmd 열고 (cmd .) 명령어 입력

	tar -zxvf [압출파일이름]
profile
어떻게든 되겠지!

0개의 댓글