rsync

2012-02-13, rsync linux

転送と同期をする

rsyncはリモートにファイルを転送するコマンドです。転送先と同期をとったり、データを圧縮して転送したりすることができるため、定期的にファイルを転送するバックアップ処理などを高速で実行することが出来ます。

よく使うのが以下の構文です。

$ rsync -avz --delete -e "ssh -p 22" local_path/ user@remote:path/

includeやexcludeオプションを使用して同期の対象を細かく指定できます。以下の例では、「foo」という名前を含むファイルのみを対象にします。

$ rsync -avz --include "*/" --include "**foo*" --exclude "*" ./ user@remote:path/

主なオプション

,-v,冗長モード。バックアップ時にバックアップしているファイル名を表示する
,-r,指定したディレクトリ以下の各ディレクトリも再帰的にバックアップする
,-l,シンボリック・リンクをそのままにバックアップする(シンボリック・リンク先の内容をコピーせずにリンクのままコピー)
,-z,データーを圧縮して転送する
,-u,追加されたファイルだけバックアップするv ,--existing,更新されたファイルだけをバックアップし、追加されたファイルはバックアップしない
,--delete,バックアップ元で削除されたファイルはバックアップ先でも削除する。
,--exclude 'PATTERN',PATTERN で指定したパターンにマッチするファイルはバックアップしない
,-a,アーカイブモード。上記のオプションのうち rlptgoD を指定します。ディレクトリ内に含まれる全てのファイル、/ディレクトリを、シンボリックリンク、パーミッション属性、グループ属性、所有者属性、タイムスタンプを保持したまま同期。
,-c,コピー元とコピー先のファイルサイズを厳密にチェックする
,--stats,コピー結果を報告する。
,-e ssh,ファイル転送の暗号化

チップス

転送中にエラーが発生する

大きなファイルを転送する際に発生するのでしょうか?詳細は調査中ですが、備忘として掲載します(今回はscpを使って逃げました)。

rsync: writefd_unbuffered failed to write 9 bytes: phase "unknown": Broken pipe
rsync error: error in rsync protocol data stream (code 12) at io.c(515)

参考リンク

この記事は役に立ちましたか?