[OSX, Ubuntu] cron, rsync 와 ssh로 백업 싱크 Computer Tip

뭐 git를 사용하기 이전에 subversion을 이용하다가,
git를 사용해 보니 여러가지 장점이 보이기 시작합니다.

일단 현재 보여지는 것은 subversion은 매 하위 폴더마다 .svn 이라는 감춤 폴더가 생성되고
여기에 해쉬 등의 정보를 넣는데 반하여,
git 는 버전관리 최상위 폴더의 .git 폴더에만 관리를 합니다.
이것이 여러 장점이 되는 군요.

암튼 git 정보를 백업하려고 하는데,
SSH를 통하여 원격에 있는 것을 rsync로 백업을 하려 합니다.

1) ~/.ssh/config 지정 (SSH 포트가 표준이 아닌 경우)

$ vi ~/.ssh/config
host g99
    Hostname h99
    Port 9999


2) 백업 쉘 스크립트

$ vi ~/sbin/backup_git.sh
#!/bin/bash
EXCLUDE="--exclude .DS_Store --exclude .Trashes"
RSYNC_OPT="-av8P --delete --rsh ssh"
RSYNC="/usr/bin/rsync $EXCLUDE $RSYNC_OPT"
BKDIR="/Volumes/HHD_750G/work/backup"
echo "backup git"
$RSYNC toor@g99:"/Users/toor/git" $BKDIR
if [ $? -eq 20 ];then exit 2; fi
$ chmod +x ~/sbin/backup_git.sh


3) 크론 테이블 저장 (사용자 mcchae)

$ sudo crontab -u mcchae -e
33 * * * * /Users/mcchae/sbin/backup_git.sh 1>/dev/null 2>/dev/null


우분투 혹은 OS X (산사자까지) 모두 잘 동작합니다.

OS X Lion 이후 부터 인가 cron이 잘 동작하지 않습니다.
다음과 같이 진행합니다.

3') cron 대신 launchctl 이용

$ vi ~/Library/LaunchAgents/com.mycron.hourly.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.mycron.hourly</string>

  <key>ProgramArguments</key>
  <array>
    <string>/Users/mcchae/sbin/backup_git.sh</string>
  </array>

  <key>Nice</key>
  <integer>1</integer>

  <key>StartInterval</key>
  <integer>3600</integer> <!-- start every X seconds -->

  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

$ launchctl load ~/Library/LaunchAgents/com.mycron.hourly.plist


어느분께는 도움이 되셨기를 바라며...

핑백

덧글

댓글 입력 영역

구글애드텍스트