rsync

提供: MacWiki
移動: 案内検索

rsync とは?[編集]

ネットワーク経由で、更新されたファイルのみを転送して同期してくれる賢いバックアップツールです。ネットワーク越しだけでなく、ローカル内のバックアップにも利用できます。

コマンドラインで動作するので、ファイルサーバ等で crontab と併用すれば定期的に自動バックアップを行えます。

使用例[編集]

例えば、

rsync -auv --delete Documents remotehost:mirror

を実行すると、remotehost サーバー上のディレクトリ mirror(無ければ作られる)の中に Documents が丸ごとコピーされます。同じコマンドを再実行すれば、変更されたファイルのみがコピーされる。また、--delete オプションのおかげで、Documents 内から削除されたファイルがあれば、mirror 内の当該ファイルも削除され、結果的に Documents と mirror/Documents が全く同じになる。ただし、u オプションを付けているので、mirror/Documents 内のファイルを変更した場合、そのファイルについては Documents 内の当該ファイルで上書きされることは無い(つまり、mirror/Documents には常に最新のファイルだけが残る)。

注:上記の例で Documents と mirror の順番を間違えると悲惨なことになりかねません。まずは --delete を外して試されることをお勧めします。また、-n を追加してシミュレーションするのも良いでしょう。

  • Mac OS X 10.4 からは、リソースフォークを扱えるようになりました。
  • ローカルファイル/フォルダの同期にも利用できます。

.DS_Store などのOS X固有ファイルを転送させないためには

rsync -avz -e ssh --exclude ".FBCIndex" --exclude ".FBCLockFolder/" --exclude ".DS_Store"

をエイリアスしておくと良いようです。

  • -E (--extended-attributes) リソースフォーク等もコピーするオプション

RsyncX[編集]

10.3 以前の Mac OS X は -E オプションが使用できませんが、RsyncX を使うとリソースフォークを保ったまま同期することが可能です。

インストールすると /usr/local/bin/rsync が作成されます。これはリソースフォークを扱えるようです。オリジナルの rsync と混同を避けるために rsyncx と名称変更するか、/usr/bin/rsync を使えないようにすると良いでしょう。

リソースフォークを同期するには --eahfs オプションを指定します。

$ rsyncx --delete --eahfs -a <src> <dest>

リソースフォークの同期に対応した rsync は、他に MacPorts の hfsrsync があるようです(hfsrsync は RsyncX のソースを元にしています)。OpenDarwinのrsync_hfsと同じ?

リンク[編集]

Wiki内の関連ページ[編集]