Quick backup

수치해석을 위한 프로그래밍을 주로 하는 제 경험상 프로그램들을 크게 수정하기 전후로 backup을 해야겠는데 CVS, Subversion, Git과 같은 version관리 프로그램은 쓰기가 거추장스럽더군요. 그렇다고 매번 복사하기는 귀찮고 해서 빠르고 간단하게 backup 할 수 있는 python script를 작성하여 사용하고 있습니다. quickBackup.py라는 script로, 실행하면 현재 디렉토리 아래에 ./bak라는 디렉토리를 만들고 파일을 backup해줍니다. 파일 이름이 source.f90일 경우 ./bak/source.bak01.f90 과 같이 복사를 하는 것이죠.

Backup 파일 이름은 option으로 조절할 수 있고, 자동으로 log file을 만들어 언제 어떤 파일을 backup했는지 알려줍니다. 원한다면 backup하면서 간단한 comment도 달 수 있습니다. 가장 마지막에 backup한 파일과 지금 backup하려는 파일이 동일할 경우에는 backup하지 않습니다. 한번에 여러 개의 파일을 backup할 수도 있습니다.^^

 

Gpl Quick Backup
    make ‘./bak’ directory and backup files
Usage :
    quickBackup.py [-h/-b/-t] filename

Required parameters :
    filename

Optional parameters : 
    -h   : place backup number at head ( bak01.filename.extension )
   -b   : place backup number between filename and extension ( filename.bak01.extension )
    -t   : place backup number at tail ( filename.extension.bak01 )
    ** default : -b
    -c   : add comment to the log file ( ./bak/quickBackup.log )

Examples :
    quickBackup.py file1.f90 file2.f
    (edit file1.f90)
    quickBackup.py file1.f90
    ls ./bak
    -> file1.bak01.f90  file1.bak02.f90  file2.bak01.f  quickBackup.log

Backup script

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하도록 한다면 그 시간에 컴퓨터에 많은 부하가 걸리겠죠.

2. gplFullBackup.sh

이 스크립트는 위의 스크립트와 유사한데, 매 시간 실행되는 것이 아니라 사용자가 직접 실행하도록 만든 스크립트입니다. 실행하면 “./backup/FullBackup20090226-1536.tgz” 과 같은 파일을 만들어줍니다.

30 boxes

최근 30 boxes라는 site를 이용하고 있다. 일정 관리하는 프로그램이 하나 필요해서 Outlook, Google Calendar, Windows live calendar 등을 써보다가 다 별로 마음에 안 들던 차에 30 boxes라는 site를 알게 되었다. 단순하게 보이지만 달력 기능에 충실하고, todo list와 api도 지원하며 blog에 올린 글이나 rss등도 관리할 수 있는 site였다. 최근 site 관리자의 활동이 좀 뜸한 듯 하긴 하지만, 결국 30 boxes를 선택했다. 매번 접속해서 확인하는 것은 귀찮기 때문에 항상 사용하는 Linux terminal에서 확인할 수 있는 프로그램이 있나 찾아봤다. 하지만 그런 프로그램이 없어서 30 boxes api를 이용하는 command line program을 직접 작성해서 사용하고 있다. 참 잘 만든 site라 생각한다.

30boxes

Next Page »