web-dev-qa-db-ja.com

特定の深さのサブフォルダーを使用してrsyncを再帰的に実行する

フォルダを再帰的にrsyncしたいが、サブフォルダを特定の深さにのみ含めたい。

たとえば、次のような1、2、3、または4つのサブフォルダーの深さが必要です。

source/
├── subfolder 1
│   ├── subsubfolder
│   │   ├── subsubsubfolder
│   │   │   └── wanted with depth 4.txt
│   │   └── wanted with depth 3.txt
│   └── wanted with depth 2.txt
├── subfolder 2
│   └── wanted with depth 2.txt
└── wanted with depth 1.txt
19
nnn

--exclude=オプション。

深さ2に同期するには(フォルダーとサブフォルダー内のファイル):

rsync -r --exclude="/*/*/" source/ target/

これはあなたにこれを与えるでしょう:

target/
├── subfolder 1
│   └── wanted with depth 2.txt
├── subfolder 2
│   └── wanted with depth 2.txt
└── wanted with depth 1.txt

深さ3に同期するには(フォルダー、サブフォルダー、サブサブフォルダー内のファイル):

rsync -r --exclude="/*/*/*/" source/ target/

あなたに与えるでしょう:

target/
├── subfolder 1
│   ├── subsubfolder
│   │   └── wanted with depth 3.txt
│   └── wanted with depth 2.txt
├── subfolder 2
│   └── wanted with depth 2.txt
└── wanted with depth 1.txt
29
nnn