Структура дерева каталогов rsync с ограниченной глубиной и исключение определенных папок

Я хочу rysnc мою структуру каталогов и подпапок без их файлов, но с максимальной глубиной 3 (/ folder1 / folder2 / folder3) и исключить определенные папки (например, кеш /)

Я пробовал эту команду:

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

но он не работает … он копирует все папки и подпапки; он не учитывает максимальную глубину и не исключает папку кеша

Нужно ли использовать другой параметр для ограничения максимальной глубины rsyc; что не так с моими существующими параметрами?

ps в последний раз, когда я задал этот вопрос, он был помечен как дубликат фильтра Rsync: копирование только одного шаблона

Это не так, как это не касается максимальной глубины и не касается только древовидной структуры каталога rsync. спасибо

  • rsync хочет скопировать файлы, которые уже существуют в каталоге назначения
  • rsync игнорирует сухую работу
  • rsync дает «chown <...> failed: Invalid argument (22)» с общим доступом nfs
  • Инкрементный файл резервной копии по дате
  • rsync поддерживать структуру папок данной точки
  • Сделать rsync перемещать (не копировать) файлы в локальной файловой системе
  • Что вы фильтруете / исключаете список при выполнении резервного копирования с помощью rsync?
  • Как настроить Unison для реального peer-to-peer?
  • 2 Solutions collect form web for “Структура дерева каталогов rsync с ограниченной глубиной и исключение определенных папок”

    Вы должны исключить многоуровневый шаблон, прежде чем включать */ поскольку последний означает «включить все каталоги», переопределяя последующее исключение. Вам также необходимо добавить дополнительный уровень как */ указывает каталог и /*/*/*/ следовательно, означает «исключить три или более уровней.

    Команда становится:

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

    (поскольку Wildcard уже прокомментировал, вы всегда должны цитировать или пропускать метасимволы оболочки.)

    Чтобы синхронизировать два дерева каталогов при соблюдении максимального предела глубины трех подкаталогов, используйте:

     rsync -avz /source/ /destination --exclude "/**/**/**/*" --exclude=cache 

    Это также исключает каталог, называемый кешем, в любом месте исходного пути.

    Linux и Unix - лучшая ОС в мире.