私自身は,既にLeopard(のTimeMachine)に切り替えたため,今は使ってませんが,
Tigerの頃には rsync の --link-dest オプションを利用したシェルスクリプトを作成し,
そのシェルスクリプトを毎時間実行するように crontab で登録して ホーム以下を全部外付けHDDへ増分バックアップしていました。
シェルスクリプトの参考にでもと,その時のバックアップ部分を記しておきます。
2行目の「backup01」がバックアップ先ボリューム名で,これを使用者のボリューム名に変更すればそのまま使用可能なはずです。
下記で使われているターミナルコマンドは 「[」(manで引く時は test)以外は man で引ける筈なので,興味があれば勉強してみて下さい。
#!/bin/bash dest=/Volumes/backup01 src=$HOME user=$dest/$(basename "$src") now=$(date +%Y/%m/%d/%H%M%S) base=$user/$now log=$user/log/log.txt #バックアップ先ボリュームがマウントされているか確認する。 if ! df | grep "$dest¥$" > /dev/null ; then echo "$dest not mounted."; exit 1 ; fi #バックアップ先ボリュームがDOSフォーマットでないか確認する。 if diskutil list $dest | grep "DOS_FAT_32" ; then exit 2 ; fi #rsync ではバックアップ先の一つ上のフォルダまでは事前に作成しておく必要がある。 dnbase=$(dirname "$base") if [ ! -d "$dnbase" ] ; then mkdir -p "$dnbase" && chmod -R 750 "$dnbase" || exit 4 fi #アクセス権不足でバックアップできないものがあった時のメッセージ。 warn="Some files and/or directories did not backuped." cd "$src" if [ -f "$log" ]; then #2回目以降のバックアップなので前回バックアップ済みのものはそこからのハードリンクにする。 lastline=$(tail -n 1 "$log") preb=$user/$(printf "%.17s" "$lastline") rsync -aE --exclude="*.sparseimage" --exclude="Library/Caches" --link-dest=$preb ./ "$base" || echo $warn else #ログファイルが無いので,最初のバックアップ。 mkdir -p "$user/log" && chmod -R 750 "$user" chown -R $user "$user" rsync -aE --exclude="*.sparseimage" --exclude="Library/Caches" ./ "$base" || echo $warn fi #ログファイルに開始日時と終了時刻とディスク使用量を追記で記録する。 echo "$now;$(date +%T),$(df | grep "$dest¥$")" >> "$log"