본문 바로가기

공부하기/Linux

CentOS 폴더 자동 백업 스크립트 작성


현재 돌리고 있는 서버에 마인크래프트 서버가 돌아가고 있다.

여기 월드 파일을 매일 특정 시간에 백업을 받게 하고 싶다.

그리고 이 백업 파일을 한달치를 보관 해뒀다가 한달이 지난 파일들은 자동으로 삭제하고 싶다.


이러한 경우에는


먼저 백업을 위한 쉘 스크립트를 작성 한다.



#!/bin/sh

strDate=`date '+%Y_%m_%d_%H%M'`

echo $strDate

service network stop

tar -zcvf /백업파일이생성될폴더명/"$strDate"_mcsvr.tgz /백업받고자하는폴더명

service network start
 


strData는 해당 스크립트가 실행되는 시간을 가지게 되며, 이를 파일 이름에 그대로 적용 하였다.

압축을 실행하기 이전에 service network stop 을 하여서 외부 접속을 차단 시킨후 백업 파일을 생성하므로

혹시라도 파일이 깨질 경우를 대비 하였다.




위와 같이 백업 스크립트를 작성 한 후, chmod로 실행 권한을 준 다음에 실행 시켜보면 정상적으로 작동을 확인 할 수 있다.

이제 이 백업 스크립트를 주기적으로 실행해주는 일만 남았다.


crontab -e 를 실행 하여 

(crontab 에 대해서는 http://jeikei.tistory.com/entry/리눅스-보안-관련-자료 에 어느 정도 나와 있다.



0 5 * * * /위에서만든백업스크립트경로
0 6 * * * find /백업파일이있는경로 -name "*_mcsvr.tgz" -mtime +30 -type f -exec rm -f {} \; 


위와 같이 추가 해준다.


먼저 앞에 숫자는 분 시 일 월 요일 순으로 나타낸다.

따라서 첫번째 줄은 매일 5시 0분에 수행하게 된다.


두번째 줄은 조금 복잡한데 쉽게 보면 -name "*_mcsvr.tgz"은 백업 파일명을 찾는 것이고(위 백업 스크립트에서 마인크래프트 월드 백업 명을 백업시간_mcsvr.tgz로 해놨다.) -mtime +30 은 30일이 넘어가는 파일을 찾는 것이다.

-exec rm -f는 그렇게 찾은 파일에 대해서 해당 명령(rm)을 수행하라는 뜻이다.


따라서 이렇게 해놓으면 자동으로 매일 5시에 서버 백업을 수행 한 후,

매일 6시에 만든지 30일이 넘어가는 파일에 대해서 자동 삭제가 수행 된다.


'공부하기 > Linux' 카테고리의 다른 글

우분투에서 lvm2 파티션 마운트 하기  (0) 2015.12.30
리눅스 보안 관련 명령어들  (0) 2015.12.21