お久しぶりのrsyncメモ(中身で比較、ディレクトリを除外など)

久しぶりにrsyncを使う場面があり、実際つかってみると、やらかしてしまうことが多いrsync。 よく使うオプションの記述方法をまとめてみました。

rsync / と の違い

間違えるとえらいことになるので注意。

  • → 自体も同期対象
  • / → 配下が同期対象

中身を比較して差分を同期する。

$ rsync -avzc <SRC DIR>/ <DST DIR>/

  • -a / あれこれオプションのまとめ。(--recursive --links --perms --times --group --owner --devices)
  • -v / 詳細表示
  • -c / チェックサムを常に使う(中身の比較となる)
  • -z / 圧縮転送

いきなりやるまえに、dry-runしましょう。

$ rsync -avnc <SRC DIR>/ <DST DIR>/

  • -n / dry-run

これやっておけば、更新対象のファイルを事前に確認できる。

除外ディレクトリ(--exclude)を指定する。.gitなど

$ rsync -avz --exclude '.git' --exclude '.project' <SRC DIR>/ <DST DIR>/

ハマりどころの1つ、除外ディレクトリが複数ある場合は、--excludeの指定を複数繰り返せばいいが、 指定方法が、 <SRC DIR> からの相対パス での指定となります。

除外ディレクトリをファイルで指定する。

$ rsync -avz --exclude '.git' --exclude '.project' <SRC DIR>/ <DST DIR>/

は、

ex.lstファイルが以下の中身とすると。

.git
.project

$ rsync -avz --exclude-from=ex.lst <SRC DIR>/ <DST DIR>/

とシンプルに記述できる。

<SRC DIR>にないファイルは削除する

$ rsync -avz --delete <SRC DIR>/ <DST DIR>/

  • --delete / ソースディレクトリにないファイルは削除する

と簡単によく使う備忘録でまとめてみました。

それでは(・o・)