rsyncコマンドのexcludeオプションを利用すると同期先へ反映したくないファイルやディレクトリを除外することができます。
同期対象ディレクトリの内容
|--a.txt |--b.txt |--c.txt |--img | |--logo.png
除外対象が1つの場合
同期対象から “b.txt” のみ対象外に同期処理を実行します。”--exclude
” オプションの後ろは半角スペースでもイコールでもOKです。
OKパターン
rsync -av --exclude='b.txt' ./dir_from/ ./dir_to/
rsync -av --exclude 'b.txt' ./dir_from/ ./dir_to/
実行結果
$ rsync -av --exclude='b.txt' ./dir_from/ ./dir_to/ sending incremental file list ./ a.txt c.txt img/ img/logo.png
NGパターン
rsync -av --exclude={'b.txt'} ./dir_from/ ./dir_to/
後から出てきますが、除外対象が複数の場合に “--exclude
” オプションで波括弧内に複数のファイルをコンマ区切りで指定するので動きそうですが、1つの場合に波括弧を利用すると除外対象にならないので注意が必要です。
実行結果
意図と異なり “b.txt” が除外されず同期対象になってしまいました。
$ rsync -av --exclude={'b.txt'} ./dir_from/ ./dir_to/ sending incremental file list ./ a.txt b.txt c.txt img/ img/logo.png
除外対象が複数の場合
excludeを複数記述する方法
除外対象が多い場合、長くなってしまいますが、複数指定しても動きます。
rsync -av --exclude='a.txt' --exclude='b.txt' --exclude='img' ./dir_from/ ./dir_to/
波括弧内にコンマ区切りで記述する方法
excludeを複数記述する方法に比べ短くスッキリかけます。
rsync -av --exclude={'a.txt','b.txt','img'} ./dir_from/ ./dir_to/
除外条件を記述した別ファイルを指定する方法
除外条件を記述したファイルを指定する場合は、これまでの “--exclude
” ではなく “--exclude-from
” オプションを利用してファイルを指定します。
rsync -av --exclude-from=ignore_list.txt ./dir_from/ ./dir_to/
除外条件ファイルの内容
以下、テストで用意したテキストファイル “ignore_list.txt” の内容です。
a.txt b.txt img
実行結果
$ rsync -av --exclude-from=ignore_list.txt ./dir_from/ ./dir_to/ sending incremental file list ./ c.txt
動作環境情報
"エックスサーバー" スタンダード(旧X10) "rsync" 3.1.2
コメント