Использование --cvs-exclude в rsync Неожиданно игнорирует основную папку?

Я использую параметр -cvs-exclude для своих rsync-скриптов уже более года. Я работаю с репозиторием SVN, поэтому он сохраняет файлы SVN без производства.

Сегодня я попытался изменить rsync, и вдруг rsync не собирал ничего из папки с именем "core". При исследовании выяснилось, что "ядро" - это папка CVS, поэтому она игнорируется.

Итак, мой вопрос в том, почему rsync работал вообще для меня, но внезапно сегодня решил начать игнорировать "основную" папку, как это должно быть.

Я решил проблему, просто игнорируя SVN файлы вместо использования исключения CVS, но я все еще недоумеваю, почему rsync работал до сегодняшнего дня.

Мой старый код rsync:

rsync -vcaz --no-p --cvs-exclude --exclude downloader --exclude media --exclude var     /var/www/project/ [email protected]:/var/www/project/httpdocs/ | grep -v '/$'

Операционная система (Running Xubuntu):

Distributor ID: Ubuntu
Description:    Ubuntu 11.10
Release:    11.10
Codename:   oneiric

версия rsync:

rsync  version 3.0.8  protocol version 30
Copyright (C) 1996-2011 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes

Возможно, это не критический вопрос, но тем не менее он беспокоит меня.

Ответ 1

Я тоже столкнулся с той же проблемой. Rsync исключает следующие типы файлов, если используется опция -C:

static char default_cvsignore[] =
    /* These default ignored items come from the CVS manual. */
    "RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS"
    " .make.state .nse_depinfo *~ #* .#* ,* _$* *$"
    " *.old *.bak *.BAK *.orig *.rej .del-*"
    " *.a *.olb *.o *.obj *.so *.exe"
    " *.Z *.elc *.ln core"
    /* The rest we added to suit ourself. */
    " .svn/ .git/ .hg/ .bzr/";

"основные" файлы являются базовыми дампами для завершенных программ, поэтому обычно вы не хотите копировать эти файлы. Проблема в том, что у вас есть, например, каталог под названием "core".

Решение состоит в том, чтобы использовать параметр "-include" или создать файл фильтрации, содержащий правило вроде:

+ core

а затем используйте "--filter = имя_файла".