Rsync rekursiv mit einer bestimmten Tiefe von Unterordnern

17

Ich möchte rsynceinen Ordner rekursiv, aber Unterordner sollen nur bis zu einer bestimmten Tiefe enthalten sein.

Zum Beispiel möchte ich eine Tiefe von 1,2,3 oder 4 Unterordnern wie folgt:

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
nnn
quelle

Antworten:

26

Erleichtern Sie die --exclude=Option.

So synchronisieren Sie bis zu einer Tiefe von 2 (Dateien in Ordnern und Unterordnern):

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

Es wird dir folgendes geben:

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

So synchronisieren Sie bis zu einer Tiefe von 3 (Dateien in Ordnern, Unterordnern und Unterordnern):

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

werde dir geben:

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
nnn
quelle