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

rsync определенные файлы, исключая остальные, игнорируя каталог .svn /, рекурсивно

Я использую rsync для копирования некоторых файлов из общей папки в другую.

Рекурсивно мне нужно:

Если я использую это:

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с