2012-01-05 10 views
10

Ho usato l'opzione --cvs-exclude sui miei script rsync per poco più di un anno. Lavoro con un repository SVN in modo da mantenere i file SVN fuori produzione.Utilizzo di --cvs-exclude in rsync Improvvisamente ignora la cartella principale?

Oggi ho tentato di rsync modifiche e improvvisamente rsync non stava prelevando nulla da una cartella denominata "core". Dopo aver investigato, ho scoperto che "core" è una cartella CVS, quindi viene ignorata.

Quindi la mia domanda è perché rsync ha funzionato del tutto per me, ma improvvisamente oggi abbiamo deciso di iniziare a ignorare la cartella "core" come dovrebbe essere.

Ho risolto il problema semplicemente ignorando i file SVN invece di usare CVS exclude, ma sono ancora perplesso sul motivo per cui rsync ha funzionato fino a oggi.

mio vecchio codice 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): versione

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 

Forse non è una questione critica, ma mi infastidisce ciò nonostante.

risposta

16

Ho avuto anche lo stesso problema. Rsync esclude i seguenti tipi di file se si utilizza l'opzione -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/"; 

file "core" sono i core dump per i programmi terminati, così tipicamente non si desidera copiare i file. Il problema è quando hai, per esempio, una directory chiamata "core".

La soluzione è quella di utilizzare l'opzione "--include", o creare un file di filtro che contiene una regola come:

+ core

e poi usare "--Filter = filename".

Problemi correlati