rsync ディレクトリツリー構造は深さが制限され、特定のフォルダを除外します。

rsync ディレクトリツリー構造は深さが制限され、特定のフォルダを除外します。

ファイルはありませんが、最大深度が3(/folder1/folder2/folder3)のマイフォルダとサブフォルダツリー構造をrysncして、特定のフォルダ(キャッシュ/など)を除外したいと思います。

私は次のコマンドを試しました。

$ rsync -azv --include=*/ --exclude=* --exclude=cache/ --exclude=/*/*/*/ source/ destination/

しかし、うまくいきません。すべてのフォルダとサブフォルダをコピーしており、最大深度を尊重せず、キャッシュフォルダを除外しません。

rsycの最大深度を制限するには、他のパラメータを使用する必要がありますか?既存のパラメータにはどのような問題がありますか?

ps前回この質問を投稿しましたが、重複としてマークされました。 Rsyncフィルタ:1つのパターンのみをコピー

最大深度を処理せず、rsyncディレクトリツリー構造のみを処理しないため、そうではありません。ありがとう

ベストアンサー1

マルチレベルパターンを含める前に、まず除外する必要があります。*/後者は「すべてのディレクトリを含める」を意味し、その後の除外項目を上書きするためです。また、*/ディレクトリを表すために追加のレベルを追加する必要があります。/*/*/*/つまり、「3つ以上のレベルを除外します。

コマンドは次のとおりです。

rsync -azv --exclude='/*/*/*/*/' --include='*/' --exclude='*' --exclude=cache/ source/ destination/

(ワイルドカードはすでにコメント化されているため、シェルメタ文字は常に引用またはエスケープする必要があります。)

おすすめ記事