2012-01-05 11 views
10

He estado utilizando la opción --cvs-exclude en mis scripts rsync durante poco más de un año. Trabajo con un repositorio SVN, por lo que mantiene los archivos SVN fuera de producción.Usar --cvs-exclude en rsync ¿De repente ignora la carpeta central?

Hoy intenté sincronizar los cambios y de repente rsync no recogía nada de una carpeta llamada "core". Al investigar descubrí que "core" es una carpeta de CVS por lo que se ignora.

Así que mi pregunta es por qué rsync funcionó en absoluto para mí, pero de repente hoy decidió comenzar a ignorar la carpeta "core" como debería ser.

He resuelto el problema simplemente ignorando los archivos SVN en lugar de usar la exclusión de CVS, pero todavía estoy perplejo sobre por qué rsync funcionó hasta hoy.

Mi viejo código de rsync:

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

Sistema operativo (Running Xubuntu): Versión

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 

Tal vez no es una cuestión crítica, pero me está molestando sin embargo.

Respuesta

16

También me encontré con el mismo problema. Rsync excluye los siguientes tipos de archivos si se usa la opción -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/"; 

archivos "centrales" son volcados de memoria para programas terminados, por lo que normalmente no se desea copiar estos archivos. El problema es cuando tienes, por ejemplo, un directorio llamado "core".

La solución es utilizar la opción "--include", o crear un archivo de filtrado que contiene una regla como:

+ core

y luego usar "--filter = nombre de archivo".