Я использую rsync для копирования некоторых файлов из общей папки в другую.
Рекурсивно мне нужно:
.svn/
каталоги в пункте назначенияЕсли я использую это:
rsync -zavC --delete --include='*.php' --include='*.js' --exclude="*" \
/origiin /destination
Тогда rsync не рекурсивен, потому что exclude="*"
исключает все файлы, а также папки
Если я добавлю --include="*/"
затем .svn/
каталог удаляется (он также включается)
Как я могу решить эту умопомрачительную дилемму?
uname -a:
Linux tux 3.9.2-1-ARCH # 1 SMP PREEMPT Сб, 11 мая, 20:31:08 CEST 2013 x86_64 GNU / Linux
версия rsync:
rsync 3.0.9-6
заранее спасибо
Хорошо, после нескольких попыток я разобрал это:
rsync -vaiz --delete --exclude=.svn/ --include='*.php' --include='*.js' \
--include='*/' --exclude='*' --prune-empty-dirs \
--filter "protect .svn/" /origin /destination
Другой подход
если вы не против синхронизации пустых каталогов, просто:
rsync -vaiz --delete --exclude=.svn/ --include='*.php' --include='*.js' \
--include='*/' --exclude='*' /origin /destination
Ключ был к --exclude=.svn/
перед --include
с