なんだこれは

はてなダイアリーから移転しました。

rsync_hfs

rsync_hfsはperiodic-weeklyで実行することにした。もとはpsyncのもの。これでweekly実行時に外付けHD hogehogeがmountされていれば、バックアップだ。

#!/bin/bash
# 
# http://www7a.biglobe.ne.jp/~tzwada/Mac/backup/index.html
# Modified by fu7mu4
# MAIL-SUBJECT to MAILSUBJECT
# MAIL-ADDRESS to MAILADDRESS

#PSYNC="/usr/local/bin/psync -c -d 2 -q"
DISKUTIL="/usr/sbin/diskutil"
USBHDD=hogehoge
DEST=/Volumes/$USBHDD
MAILSUBJECT="System Alert: backup"
MAILADDRESS="funamushi"
LOGFILE=/var/log/rsync.log

check() {
  while read line
  do
    VolName=`echo ${line} | cut -d' ' -f3`
    if [ "x${VolName}" = "x${USBHDD}" ] ; then
      MFlg=yes

      DevName=`echo ${line} | cut -d' ' -f6`
      ${DISKUTIL} mount ${DevName} >&2

      echo "${MFlg}"
      break
    fi
  done
}

if [ ! -d $DEST ] ; then
  MFlg=`${DISKUTIL} list | check`

  if [ "${MFlg}" != "yes" ] ; then
    echo "Couldn't find backup HDD." \
    | mail -s ${MAILSUBJECT} ${MAILADDRESS}
    exit 1
  fi
fi

if [ -d $DEST ] ; then
  #${PSYNC} / ${DEST}
  date >> $LOGFILE
  /usr/local/bin/rsync -a -q --eahfs --delete \
    --exclude="/dev/*" \
    --exclude="/afs/*"  \
    --exclude="/private/tmp/*" \
    --exclude="/Network/*"  \
    --exclude="/Volumes/*" \
    --exclude="/automount/*"  \
    --exclude="/private/var/run/*" \
    --exclude="/ClamXavBox" \
    /. ${DEST} >> $LOGFILE 2>&1
  /usr/sbin/bless -folder "${DEST}/System/Library/CoreServices"
else
  echo "Couldn't backup because HDD couldn't be mounted." \
  | mail -s ${MAILSUBJECT} ${MAILADDRESS} 
  exit 1
fi


一回目は全部backupだから

real 225m
user  11m
sys   40m

二回目は差分backupだからってほとんどファイル変わってない。

real 40m
user  2m
sys  14m

三回目は警告メッセージを/var/log/に書き込むことにした。

real 39m
user  2m
sys  14m