以下のコードで発生し、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
マニュアルから:
送信を送信者から受信者に送信された名前のサブツリーと考えると、転送ルートはツリーが宛先ディレクトリからコピーを開始するポイントです。このルートは、パターンがマッチで始まる位置を制御します
/
。