rsync rekurencyjnie z pewną głębokością podfolderów

17

Chcę rsyncrekurencyjnie do folderu, ale chcę, aby podfoldery były dołączane tylko do określonej głębokości.

Na przykład chciałbym mieć głębokość 1,2,3 lub 4 podfolderów takich jak to:

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
źródło

Odpowiedzi:

26

Ułatw --exclude=opcję.

Aby zsynchronizować z głębokością 2 (pliki w folderze i podfolderach):

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

Da ci to:

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

Aby zsynchronizować z głębokością 3 (pliki w folderze, podfolderach i podfolderach):

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

da tobie:

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
źródło