Rsyncで名前と深さでファイルを除外する方法

Rsyncで名前と深さでファイルを除外する方法

rsyncを使用していくつかのバックアップを自動化しようとすると、次の問題が発生します。レプリケーションから除外する一部のコンテンツを含むファイルがあります。ファイルに1行しかないと仮定

exc

rsync が行うことは、rsync を提供するディレクトリから「exc」という名前のファイルまたはディレクトリを除外することです。ただし、次のツリーがある場合:

./
 |
 +---exc
 |      file1
 |
 +---directory
     +  file2
     |
     |
     +---exc
            file3

図が明確であることを願っています。私が望むのは、最初のEXCを除外することですが、EXC行を含むファイルを渡している間に2番目のEXCをコピーすると、両方が除外されます。 exというより深いファイルがある可能性があるため、除外ファイルの行はルートファイルexcのみを指す必要があります。

除外パターンはどのように見えるべきですか?

答え1

--exclude前に追加して/輸送ルートに固定することができます。これにより、--exclude /exc必要に応じて機能します。

テストケースを使用してください。

mkdir -p exc directory/exc
touch exc/file1 directory/file2 directory/exc/file3
rsync -av --exclude /exc . /tmp/

/tmp には、/exc/* ディレクトリを含む現在のフォルダが含まれますが、exc/元のフォルダは含まれません。

関連情報