rsync | excludeオプションで同期対象から除外するディレクトリやファイルを指定する方法

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

コメント

タイトルとURLをコピーしました