お久しぶりの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・)