Backup source of UNIX/コマンド/クライアント/rsync(No. 4)

TITLE:rsync - 差分バックアップ
#navi(UNIX/コマンド)

rsync コマンドはファイルのバックアップを取るのに利用します。
通常の cp とは違いバックアップ元とバックアップ先ファイルの差分だけを送信することで高速なバックアップを行えます。
r が冠するように rlogin や rcp などの r* 系コマンドの1つですが、ローカルでのバックアップコマンドとしても利用できます。

#contentsx

*ローカルで使用する [#udb32cf4]
 rsync -auv --delete --exclude ".svn" [src_dir] [dest_dir]
のように使用します。

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

注意が必要なのが
 [src_dir]/
 [src_dir]/file1
 [src_dir]/file2
とファイルがある場合
 rsync -auv --delete --exclude ".svn" [src_dir]/ [dest_dir]
では
 [dest_dir]/
 [dest_dir]/file1
 [dest_dir]/file2
のようにバックアップを取るのに対し、
 rsync -auv --delete --exclude ".svn" [src_dir] [dest_dir]
では
 [dest_dir]/
 [dest_dir]/[src_dir]
 [dest_dir]/[src_dir]/file1
 [dest_dir]/[src_dir]/file2
のようにバックアップをとる([src_dir] が中に入る)点です。
オプション --delete をつけていると、この少しの違いが大きな違いになってしまうことがあります。

/ を付けると [src_dir]/* のような意味になると思っておけば良さそうです。
[dest_dir] には / があろうがなかろうが動作は変わりません。

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

*リモートで使用する [#z9280855]

リモート先に rsyncd サーバを建てることで差分バックアップ機能を使えます。
最近では他にも ssh との連携もサポートしており、
+ ローカルで起動された rsync は
+ ssh でリモートへ login し
+ リモート側でも rsync を起動する。
+ その後、ローカルの rsync とリモートの rsync とで通信を行い、バックアップを行う。

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

(予定地)

#navi(UNIX/コマンド,,footer)
xrea