rsync recursivamente com uma certa profundidade de subpastas

12

Eu quero rsync uma pasta de forma recursiva, mas quero que as subpastas sejam incluídas apenas a uma certa profundidade.

Por exemplo, eu gostaria de ter uma profundidade de 1,2,3 ou 4 subpastas assim:

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
    
por nnn 09.01.2015 / 16:45

1 resposta

19

Facilite a opção --exclude= .

Para sincronizar com uma profundidade de 2 (arquivos dentro de pastas e subpastas):

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

Isso lhe dará isto:

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

Para sincronizar com uma profundidade de 3 (arquivos dentro de pastas, subpastas e subpastas):

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

vai te dar:

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
    
por 09.01.2015 / 16:45