1. gplBackup.sh
이 스크립트는 실수로 rm * 또는 rm –rf * 등의 명령을 내려 작업중인 source code를 삭제했을 때 복구할 수 있도록 파일들을 주기적으로 backup하는 스크립트입니다. 이 스크립트와 cron 명령을 함께 사용하게 되는데, 사용하기 위한 설정 과정은 다음과 같습니다.
1) 위의 스크립트를 Backup하고자 하는 디렉토리들이 있는 가장 상위의 디렉토리에 복사합니다.
예를 들어, /home/userid/codes/modeling과 /home/userid/codes/inversion 두 개의 디렉토리를 backup하고 싶을 때 위 스크립트를 다음의 디렉토리에 복사합니다.
/home/userid/codes/gplBackup.sh
2) 스크립트를 수정하여 backup하고자 하는 디렉토리와 확장자, backup에서 제외하고자 하는 디렉토리를 설정합니다.
Backup할 디렉토리는 dirList라는 배열에 저장합니다. Backup은 recursive하게 수행되기 때문에 subdirectory들 중 제외하고 싶은 디렉토리가 있을 경우, excDirList에 제외하고 싶은 디렉토리명을 써줍니다. Backup은 확장자나 파일명을 기준으로 하게 됩니다. Backup하고 싶은 확장자나 파일명을 extList라는 배열에 적어줍니다. 마지막으로 backupdir 이라는 변수에 backup한 파일들이 들어갈 디렉토리명을 적어주면 기본적인 스크립트 수정이 끝나게 됩니다.
예> backupdir = “/home/userid/codes/backup”
여기 적은 디렉토리는 미리 만들어 놓도록 합니다.
3) crontab -e로 crontab 파일 연 다음 아래의 줄을 추가합니다.
10 * * * * /home/userid/codes/gplBackup.sh
위의 6개의 항목이 의미하는 바는 다음과 같습니다.
분, 시, 일, 달, 요일, 실행 명령
따라서 위의 명령은 매 달, 매 일, 매 시 10분에 backup 스크립트를 실행하라는 명령입니다. 위의 줄을 추가한 후에는 crontab -l로 위의 줄이 추가되었는지 확인할 수 있습니다. 여기까지 해 놓으면 설정이 끝납니다.
위의 스크립트는 매 시 10분에 해당 디렉토리의 해당 파일들을 backup하고 스크립트 40번째 줄에 지정된 시간이 되면 디스크 용량 절약을 위해 지금까지 backup했던 파일들을 삭제합니다. 매일 지정된 시간에 생성된 파일은 남겨둡니다. 지정된 시간에 생성된 파일은 이름이 다릅니다. 기본적으로 매 시간 생성되는 파일은 “backup20090307-1210.tgz” 와 같은 이름을 가지고, 지정된 시간에 생성되는 파일은 “Backup.20090307-1510.tgz”와 같은 이름을 가집니다.
주의사항) 위 스크립트는 rm *과 같은 상황에 대비하기 위해 만든 것이기 때문에 되도록이면 주로 작업하는 code들만 backup하도록 하세요. 현재 컴퓨터에 있는 source code를 전부 backup하고 싶은 경우에는 아래의 gplFullBackup 스크립트를 사용합시다.
또, 공용 서버를 사용하는 경우, 위의 10분이라고 나온 예에서 10분을 27분, 38분과 같이 다른 사람들이 안 쓸 것 같은 시간으로 바꾸세요. 모두가 같은 시간에 backup하도록 한다면 그 시간에 컴퓨터에 많은 부하가 걸리겠죠.
이 스크립트는 위의 스크립트와 유사한데, 매 시간 실행되는 것이 아니라 사용자가 직접 실행하도록 만든 스크립트입니다. 실행하면 “./backup/FullBackup20090226-1536.tgz” 과 같은 파일을 만들어줍니다.