Использование --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 = имя_файла".