rsync: ソースからディレクトリを除外する

rsync: ソースからディレクトリを除外する

以下のコードで発生し、rsync無視されます--exclude。これを変更して複数のディレクトリに拡張するにはどうすればよいですか?

$ rsync --help | grep Usage
Usage: rsync [OPTION]... SRC [SRC]... DEST

$ man rsync | grep -- '--exclude'
   --exclude=PATTERN        exclude files matching PATTERN

$ sudo rsync -avz --exclude='/home/erwann/.cache/' '/home/erwann' '/run/media/erwann/bkup'
sending incremental file list
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/index
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/doomed/
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/entries/

答え1

パターンはパス名ビットを考慮します。いいえソースパスの一部です。これはディレクトリと一致することを意味します。.cache まっすぐソースパスの下でパターンとして/home/erwann使用します/erwann/.cache/(そのディレクトリが「転送ルート」として/home機能するため)。rsync

rsync -av --exclude=/erwann/.cache/ /home/erwann /run/media/erwann/bkup

パスの上部に除外パターンを固定することで、/ファイル階層の下位部分で一致するのを防ぎます。

/ソースパスの末尾に追加すると/home/erwann「転送ルート」になるのでパターンを/.cache/次へ追加 erwann以前と同じ効果を得るには、ターゲットパスに移動します。

rsync -av --exclude=/.cache/ /home/erwann/ /run/media/erwann/bkup/erwann

rsyncマニュアルから:

送信を送信者から受信者に送信された名前のサブツリーと考えると、転送ルートはツリーが宛先ディレクトリからコピーを開始するポイントです。このルートは、パターンがマッチで始まる位置を制御します/

関連情報