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

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

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

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

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

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

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

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

  • Ошибка RSync в скрипте
  • Ускорить / избежать вычисления списков файлов rsync
  • копии попыток жесткой ссылки rsync
  • принудительное копирование поврежденного домашнего каталога
  • "Rsync: не удалось установить разрешения на ..." ошибка с параметром rsync -a или -p
  • rsync список файлов в подкаталогах на удаленный сервер и удаление посторонних
  • rsync оставляет только частичные файлы?
  • rsync дает ошибку в сценарии оболочки
  • 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 - лучшая ОС в мире.