Tigerのrsyncで疑似TimeMachine

タイムトンネルはありませんが,10.4(Tiger)以降のrsyncコマンドでほぼTimeMachineと同様の増分バックアップを実現するシェルスクリプトを考えました。
この掲示板には記載しきれないため,下記のページに載せます。文字コードはUTF-8です。
http://www.sepia.dti.ne.jp/kanekaka/pTimeMachine.txt
私の場合,起動ボリューム全体のバックアップは不要で,どちらかというとUsers以下あるいは特定のユーザのホームフォルダ以下を(FileVaultの場合はログイン中しかバックアップしないものの中身を)増分バックアップしたいため,目的のフォルダに上記シェエルスクリプトファイルを置いて使うことを想定しています。
上記シェルスクリプトのダメだしをしたいと思いますので,ご意見アイデアをいただければと思います。
現時点で改善したいのは以下の現象です。
バックアップから除外するパターンの指定も含め,できれば外部ファイルに依存せずこのファイル内で完結したいと考えています。しかしながら
exclude="--exclude=\"*.sparseimage\" --exclude=\"Library/Caches/Safari/\""のように1カ所で記述するようにしてrsyncの引数に$excludeを与えるようにするとうまく除外されずに全部コピーされてしまう現象に悩まされています。
上記に限らずダメだしのご意見をいただければ幸いです。

投稿日 2007/11/09 22:37

返信: 2

2007/11/12 17:40 Community User への返信

自己フォローです。
日付が変わるところで不具合が二つ判明しました。
rsync では ditto や mkdir -p のようにバックアップ先に新規作成するディレクトリの途中のディレクトリは新規作成してくれません。
新規バックアップの時は気付いていたものの,増分バックアップでは同日中は大丈夫でも,翌日になると途中のディレクトリがない状態になってしまうことに気付いていませんでした。バックアップを開始する前に次のコマンドが必要です。
[ ! -d $(dirname $base) ] && mkdir -p $(dirname $base) && chmod -R 750 $(dirname $base)
またrsync はたぶんバックアップが完了する前に処理を戻してくれるようで,バックアップが完了する前に前日のディレクトリの整理をしてしまうことになるようです。
そこで次のようにして終了コードを受け取るまで待つようにしました。
rsync -aE --exclude="*.sparseimage" --exclude="Library/Caches/Safari/" --link-dest=$preb ./ $base &&
同様に新規バックアップでも1時間以上バックアップに時間がかかる場合には問題ありそうなので,次のようにして待つようにしました。
rsync -aE --exclude="*.sparseimage" --exclude="Library/Caches/Safari/" ./ $base &&
touch $log
&& の後に何もせずに fi があるとエラーになるので,とりあえずログファイルの初期化をさせることにしました。
その他にはrootのcrontabがまだ無い状態で開始すると1回だけ警告が出るのが気に入らないので,次のようにして警告メッセージの表示を止めました。
crontab=$(crontab -lu root 2> /dev/null)
その他,特に問題は無いものの冗長だった部分を少し直しました。

2007/11/13 20:00 Community User への返信

またまた自己フォローです。
rsync の終了コードを受け取るまで待つようにするために&&を使いましたが,一般ユーザで実行して一部のファイルでアクセス権不足があった時に,次の処理(過去フォルダの整理)が実行されない副作用が出てしまいます。
そこで|| echo $warnのように警告表示待ちとするようにしました。
一般ユーザで実行された場合は,ダブルクリックで実行コマンドを起動できるターミナルアイコンをデスクトップに作成するようにしました。
また過去フォルダの整理をするかしないかをオプションスイッチで制御できるようにしました。
バックアップされない場合の原因がなるべく分かるようにメッセージを工夫しました。
今回の変更後は文字コードをeucに変えました。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

Tigerのrsyncで疑似TimeMachine

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。