2 RsyncXでバックアップ
December 17, 2004. Tags: Mac, OpenSource.![]()
ラボでiMacG5を使い始めてしばらく経ちましたが、自宅ではWindowsマシンからVPNでiMacG5にアクセスして仕事の続きをする体制です。VPN経由のファイル共有でファイルを失ったことはないんだけど、やや心もとないのでiMacから大学のサーバに毎夕バックアップをとることにしました。
使うツールはopensourceのincremental backupツールであるrsyncにMacのHFS+サポートを追加したRsyncX 2.1。macosxlabs.orgで公開されています。
rsync/RsyncXはかなり高機能なツールで、バックアップサーバマシンにリモートログインしてファイルをpush/pullすることもできるらしい。さらにRsyncXのGUIフロントエンドはscript generator、cronのscheduler、サーバ・クライアントのセットアップアシスタントと充実しています。スゴイ。
でも自分で使う限りは、自分のマシンにマウントしたサーバのhomeディレクトリをローカル扱いしてコピーすれば十分。スクリプトも自分で書くことにしました。何でRsyncXを使いたいかっていうと、1 GBくらいのディレクトリから更新されたファイルだけincremental backupしたいから。
a=$(date)
echo $a START Backup >> /Users/matopc/Documents/Backup/rsyncx.log
rsync -avzu --delete --stats /Users/matopc/Documents/Docs /Volumes/Server/Documents >> /Users/matopc/Documents/Backup/rsyncx.log
a=$(date)
echo $a END Backup >> /Users/matopc/Documents/Backup/rsyncx.log
rsyncのmanはDarwin man pagesでもcheckできます。上のスクリプトで使ったオプションは
-a, --archive archive mode, equivalent to -rlptgoD
-r, --recursive recurse into directories
-l, --links copy symlinks as symlinks
-p, --perms preserve permissions
-t, --times preserve times
-g, --group preserve group
-o, --owner preserve owner (root only)
-D, --devices preserve devices (root only)
-z, --compress compress file data
-u, --update update only (don't overwrite newer files)
--delete delete files that don't exist on the sending side
--stats give some file transfer stats
一応、logを作成するようにしました。あとはいつも使ってるCronnixでcron jobを設定。It works!
2004/12/20追記
MacOS Finderの不可視ファイル(.FBC*)と(.DS_Store)をバックアップから除外する事にしました。
追加するオプションは
最終的なスクリプトは
a=$(date)
echo $a START Backup >> /Users/matopc/Documents/Backup/rsyncx.log
rsync -avzu --delete --stats --exclude='.FBC*' --exclude='.DS_Store' /Users/matopc/Documents/Docs /Volumes/Server/Documents >> /Users/matopc/Documents/Backup/rsyncx.log
a=$(date)
echo $a END Backup >> /Users/matopc/Documents/Backup/rsyncx.log
となりました。
2004/12/29追記
とおりがかりさんからのコメントでHFS+追加情報を含めてコピーするオプションを外していたことに気づきました。せっかく対応しているrsyncを使っているので、特にHFS+ -> HFS+のバックアップをする方はオプションを入れておくとMacOS時代からのfile type/creater情報、ファイルによってはサムネイルなどが保持されると思います。 ![]()
と書きながらマウントした別volumeで動くかテストできていませんのでご注意を。Local HD(HFS+)内の別ディレクトリへのコピーならいいみたいだけど。
バックアップvolumeがHFS+以外の場合やWindowsと共用で拡張子付きで管理している場合はオフでもよさそうです。

このスクリプトだとhfs+のオプションが入っていないのでリソースフォークが
欠落してしまっているように見受けられるのですが大丈夫でしょうか?
とおりがかりさん、コメントありがとうございます。
> hfs+のオプション
確かにそうですね。ふだん拡張子を付けてるので全然気づきませんでした。
スクリプトでご迷惑をおかけしていたらスミマセン。