Назад | Перейти на главную страницу

Конфликт фильтров RSYNC

Мне пришлось разбить свои задачи rsync на более мелкие задания, учитывая размер моих каталогов. По сути, я делаю это в алфавитном порядке (т.е. скрипт, который синхронизирует папки, начиная с A-D, E-H и т. Д. И т. Д.).

У меня проблема ... мой файл A-D filter.txt работает нормально, но все остальные не работают. Я считаю, что проблема в том, что путь, который я синхронизирую:

/AUser/db/Backups/***
/AUser2/db/Backups/***
/CUser/db/Backups/***
/EUser/db/Backups/***

Мой файл filter.txt для A-D выглядит так:

- E*
- e*
- F*
- f* (etc all the way through Z)
+ */db/
+ */db/Backups/***
- *

Тот, что выше, работает без проблем. Однако это не так:

- A*
- a*
- B*
- b* 
- C*
- c*
- D*
- d*
- I*
- i*
- J* (etc all the way through Z)
+ */db/
+ */db/Backups/***
- *

Я предполагаю, что мое исключение либо d, либо B вызывает это (это исключает папку db или папку резервных копий ??), но я не могу понять, почему, поскольку у меня есть включение для * / db / и * / db / Резервные копии / ***

Спасибо!!

Фильтры rsync работают с первым найденным совпадением - так что да, ваши исключения «d *» и «B *» исключают ваши подкаталоги «db» и «Backups» до того, как вы включаете совпадения.

Было бы лучше просто включить конкретные пути, которые вы хотите включить, а затем исключить все остальное, например:

+ /[E-H]*            # include top-level dirs starting with E through to H
+ */db/              # include "db" subdirectories
+ */db/Backups/      # include "db/Backups" subdirectories
- */                 # exclude all other directories