rsync певні файли, крім решти, ігноруючи .svn / каталог, рекурсивно


2

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

Рекурсивно мені потрібно:

  • Видаліть файли за адресою, які були видалені з оригіналу
  • Синхронізуйте лише файли php та js
  • Виключіть всі інші типи файлів
  • Не видаляйте .svn/каталоги за призначенням

Якщо я використовую це:

rsync -zavC --delete --include='*.php' --include='*.js' --exclude="*" \
    /origiin /destination

Тоді rsync не є рекурсивним, оскільки exclude="*"виключає всі файли, а також папки

Якщо я додаю, --include="*/"то .svn/каталог видаляється (він також включається)

Як я можу вирішити цю дилему, що підриває розум?

унме -а:

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

Спасибі заздалегідь

Відповіді:


0

Гаразд, після декількох спроб я сортував це:

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«з


Ви жорстко кодували ці значення в скрипті bash або генерували їх? Ще одне - фільтруюче питання з використанням bash.
rjt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.