rsync - 差分バックアップ


rsync コマンドはファイルのバックアップを取るのに利用します。 r が冠するように rlogin や rcp などの r* 系コマンドの1つで、リモートサーバとの間でバックアップを取ることができます。ローカルでのバックアップコマンドとしても利用できます。

rsyncはデフォルトでは、サイズまたは変更日時が変わったファイルをバックアップが必要なファイルとして探知します。より厳密に比較したい場合は、それらを無効化し md5 ハッシュ値を比較に使用することもできます(-c)。

Table of Contents

ローカルで使用する Edit

rsync -auv --delete --exclude ".svn" [src_dir] [dest_dir]

のように使用します。

ファイルの属性を保存し(-a)、目的地側に新しいファイルがある場合は上書きしない(-u)ようにし、進歩状況の表示(-v)をし、 バックアップ元にないファイルはバックアップ先から削除します(--delete)し、--exclude で指定した文字列にマッチするファイル、ディレクトリを除いて、バックアップを取ります。

注意

rsync -auv --delete --exclude ".svn" [src_dir] [dest_dir]

とすると、[dest_dir] 下に [src_dir] を作成してしまいます。[dest_dir]/[src_dir] のように。
[src_dir] 下のファイルと、[dest_dir] 下のファイルの同期を取りたい場合は、

rsync -auv --delete --exclude ".svn" [src_dir]/ [dest_dir]

のようにします。

delete オプションで失敗するのが怖い場合は --backup オプションを使用します。ファイルを直接削除せずに --backup-dir=<ディレクトリ名> で指定したディレクトリに移動してくれます。

リモートで使用する Edit

リモート先に rsyncd サーバを建てることで差分バックアップ機能を使えます。 最近では他にも ssh との連携もサポートしており、

  1. ローカルで起動された rsync
  2. ssh でリモートへ login し
  3. リモート側でも rsync を起動する。
  4. その後、ローカルの rsync とリモートの rsync とで通信を行い、バックアップを行う。

という仕組みで差分バックアップを行えるようになっています。

(予定地)


xrea