Bonjour, Je cherche à faire un rsync avec un filtre "ne transférer que les fichier correspondant à pattern". J'ai essayé rsync -avn --exclude=* --include=pattern** path1 path2 => tout est exclu (en lisant le man je comprend pourtant pas ça, mais je dois mal comprendre). rsync -avn --filter="- *" --filter="+ pattern**" path1 path2 => idem et idem toujours si j'inverse les params Bon, j'ai bien une idée de contournement (bien bourrin avec du sortie rsync -n|sed -e expr|sh) mais si y'avais ça possible directement avec la bonne syntaxe rsync, ce serait plus intelligent... (et j'aurai appris un truc) Merci -- Daniel
Daniel Caillibaud a écrit :
Je cherche à faire un rsync avec un filtre "ne transférer que les fichier correspondant à pattern". [..] rsync -avn --filter="- *" --filter="+ pattern**" path1 path2 => idem et idem toujours si j'inverse les params
pourtant, l'inverse, c'est à dire : rsync -avvn --filter="+ pattern*" --filter="- *" path1 path2 marche très bien chez moi... essaye avec l'option -vv qui te donne la liste des inclusions/exclusions ++ -- /// Stephane Jourdois /"\ ASCII RIBBON CAMPAIGN \\\ ((( Consultant securite \ / AGAINST HTML MAIL ))) \\\ 24 rue Cauchy X /// \\\ 75015 Paris / \ +33 6 8643 3085 ///
Stephane Jourdois wrote:
Daniel Caillibaud a écrit :
Je cherche à faire un rsync avec un filtre "ne transférer que les fichier correspondant à pattern".
[..]
rsync -avvn --filter="+ pattern*" --filter="- *" path1 path2
marche très bien chez moi... essaye avec l'option -vv qui te donne la liste des inclusions/exclusions
Chez moi (debian etch, rsync version 2.6.9 protocol version 29), ça marche pas.... rsync -avvn --filter="+ pattern**" --filter="- *" path1/rep path2/rep building file list ... [sender] hiding directory rep because of pattern *
essaye avec l'option -vv qui te donne la liste des inclusions/exclusions
Effectivement, ça cause plus ;-) -- Daniel R: Parce que ça renverse bêtement l'ordre naturel de lecture! Q: Mais pourquoi citer en fin de message est-il si effroyable? R: Répondre au dessus de la citation Q: Quelle est la chose la plus désagréable dans un message ?
On Wed, Jan 24, 2007 at 11:13:40AM +0100, Daniel Caillibaud wrote:
Stephane Jourdois wrote:
Daniel Caillibaud a écrit :
Je cherche à faire un rsync avec un filtre "ne transférer que les fichier correspondant à pattern".
[..]
rsync -avvn --filter="+ pattern*" --filter="- *" path1 path2
marche très bien chez moi... essaye avec l'option -vv qui te donne la liste des inclusions/exclusions
Chez moi (debian etch, rsync version 2.6.9 protocol version 29), ça marche pas....
rsync -avvn --filter="+ pattern**" --filter="- *" path1/rep path2/rep building file list ... [sender] hiding directory rep because of pattern *
essaye avec l'option -vv qui te donne la liste des inclusions/exclusions
Effectivement, ça cause plus ;-)
J'ai testé sur debian sid, avec le même rsync. Tu veux pas montrer ton pattern et ton rep qui matche pas ? Je parie sur une erreur de pattern... Pourquoi **, d'ailleurs ? -- /// Stephane Jourdois /"\ ASCII RIBBON CAMPAIGN \\\ ((( Consultant securite \ / AGAINST HTML MAIL ))) \\\ 24 rue Cauchy X /// \\\ 75015 Paris / \ +33 6 8643 3085 ///
Stephane Jourdois wrote:
J'ai testé sur debian sid, avec le même rsync.
Tu veux pas montrer ton pattern et ton rep qui matche pas ?
copier/coller de la commande que j'ai tapé $rsync -avvn --exclude='*' --include='.svn**' /webdidier/www/vhosts/testsvn/swf/images /webdidier/www/vhosts/contact.editionsdidier.com/swf/images building file list ... [sender] hiding directory images because of pattern * c'est sur du nfs mais je vois pas le pb. un exemple facile à reproduire mkdir -p test1/rep1 test2 touch test1/rep1/f1 test1/rep1/totof2 test1/rep1/f3 rsync -avvn --exclude='*' --include='toto*' test1 test2 qui répond : building file list ... [sender] hiding directory test1 because of pattern * done delta-transmission disabled for local transfer or --whole-file total: matches=0 hash_hits=0 false_alarms=0 data=0 sent 29 bytes received 20 bytes 98.00 bytes/sec total size is 0 speedup is 0.00
Pourquoi **, d'ailleurs ?
Pour prendre tout le contenu des rep .svn (et seulement eux). -- Daniel
On 2007-01-24 13:41:57 +0100, Daniel Caillibaud wrote:
copier/coller de la commande que j'ai tapé $rsync -avvn --exclude='*' --include='.svn**' /webdidier/www/vhosts/testsvn/swf/images /webdidier/www/vhosts/contact.editionsdidier.com/swf/images building file list ... [sender] hiding directory images because of pattern *
Le --exclude='*' exclut tout, donc en particulier le répertoire racine "images".
c'est sur du nfs mais je vois pas le pb.
un exemple facile à reproduire
mkdir -p test1/rep1 test2 touch test1/rep1/f1 test1/rep1/totof2 test1/rep1/f3 rsync -avvn --exclude='*' --include='toto*' test1 test2
qui répond : building file list ... [sender] hiding directory test1 because of pattern * done delta-transmission disabled for local transfer or --whole-file total: matches=0 hash_hits=0 false_alarms=0 data=0
sent 29 bytes received 20 bytes 98.00 bytes/sec total size is 0 speedup is 0.00
Idem.
Pourquoi **, d'ailleurs ?
Pour prendre tout le contenu des rep .svn (et seulement eux).
".svn" suffit et est même plus fiable (e.g. ".svnblah" ne doit pas être exclu), car quand un répertoire est exclu, tout son contenu aussi. -- Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/> Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
Vincent Lefevre wrote:
On 2007-01-24 13:41:57 +0100, Daniel Caillibaud wrote:
copier/coller de la commande que j'ai tapé $rsync -avvn --exclude='*' --include='.svn**' /webdidier/www/vhosts/testsvn/swf/images /webdidier/www/vhosts/contact.editionsdidier.com/swf/images building file list ... [sender] hiding directory images because of pattern *
Le --exclude='*' exclut tout, donc en particulier le répertoire racine "images".
C'est bien mon pb, comment exclure "tout sauf..."
Pourquoi **, d'ailleurs ? Pour prendre tout le contenu des rep .svn (et seulement eux).
".svn" suffit et est même plus fiable (e.g. ".svnblah" ne doit pas être exclu),
OK, mais je veux aussi .svn/blah, d'où le 2e *
car quand un répertoire est exclu, tout son contenu aussi.
Oui mais je veux justement l'inclure... les '**' sont là pour inclure tous les fichiers qui ont '.svn' dans leur nom relatif. svn/toto match avec '.svn**' mais pas avec '.svn*' -- Daniel
On Wed, Jan 24, 2007 at 02:19:18PM +0100, Daniel Caillibaud wrote:
Vincent Lefevre wrote:
On 2007-01-24 13:41:57 +0100, Daniel Caillibaud wrote:
copier/coller de la commande que j'ai tapé $rsync -avvn --exclude='*' --include='.svn**' /webdidier/www/vhosts/testsvn/swf/images /webdidier/www/vhosts/contact.editionsdidier.com/swf/images building file list ... [sender] hiding directory images because of pattern *
Le --exclude='*' exclut tout, donc en particulier le répertoire racine "images".
C'est bien mon pb, comment exclure "tout sauf..."
Pas seulement, tu veux tout exclure, sauf _des_sous_repertoires_ ! Or simplement dans ton énoncé, il y a une ambiguité : Je veux exlure le répertoire images, mais pas le sous-répertoire images/.svn Difficile de formuler ça bien...
Pourquoi **, d'ailleurs ? Pour prendre tout le contenu des rep .svn (et seulement eux).
".svn" suffit et est même plus fiable (e.g. ".svnblah" ne doit pas être exclu),
OK, mais je veux aussi .svn/blah, d'où le 2e *
Ca marche pas comme ça : en shell, ** = *
car quand un répertoire est exclu, tout son contenu aussi.
Oui mais je veux justement l'inclure... les '**' sont là pour inclure tous les fichiers qui ont '.svn' dans leur nom relatif.
svn/toto match avec '.svn**' mais pas avec '.svn*'
Ce n'est probablement pas le point discriminent :-) Au final, seul find saura faire ça. rsync ne parcourt pas une arbo quand elle est exclue. Et ça n'est pas du tout illogique... ++ PS: J'ai fait autre chose entre temps, du coup je sais plus ce que je voulais dire. J'envoie le mail tel quel désolé :-) -- /// Stephane Jourdois /"\ ASCII RIBBON CAMPAIGN \\\ ((( Consultant securite \ / AGAINST HTML MAIL ))) \\\ 24 rue Cauchy X /// \\\ 75015 Paris / \ +33 6 8643 3085 ///
Stephane Jourdois wrote:
C'est bien mon pb, comment exclure "tout sauf..."
Pas seulement, tu veux tout exclure, sauf _des_sous_repertoires_ ! Or simplement dans ton énoncé, il y a une ambiguité : Je veux exlure le répertoire images, mais pas le sous-répertoire images/.svn Difficile de formuler ça bien...
Pourquoi **, d'ailleurs ? Pour prendre tout le contenu des rep .svn (et seulement eux). ".svn" suffit et est même plus fiable (e.g. ".svnblah" ne doit pas être exclu), OK, mais je veux aussi .svn/blah, d'où le 2e *
Ca marche pas comme ça : en shell, ** = *
oui, mais rsync a sa syntaxe à lui là-dessus.
car quand un répertoire est exclu, tout son contenu aussi. Oui mais je veux justement l'inclure...
Au final, seul find saura faire ça. rsync ne parcourt pas une arbo quand elle est exclue. Et ça n'est pas du tout illogique...
Bon, ben mon rsync -avvn --exclude='*' --include='.svn**' /webdidier/www/vhosts/testsvn /webdidier/www/vhosts/contact.editionsdidier.com a été remplacé par cd /webdidier/www/vhosts/testsvn find -type d -name .svn -exec cp -a --parents {} /webdidier/www/vhosts/contact.editionsdidier.com/ \; Ca marche aussi... -- Daniel
On 2007-01-24 14:19:18 +0100, Daniel Caillibaud wrote:
Vincent Lefevre wrote:
On 2007-01-24 13:41:57 +0100, Daniel Caillibaud wrote:
copier/coller de la commande que j'ai tapé $rsync -avvn --exclude='*' --include='.svn**' /webdidier/www/vhosts/testsvn/swf/images /webdidier/www/vhosts/contact.editionsdidier.com/swf/images building file list ... [sender] hiding directory images because of pattern *
Le --exclude='*' exclut tout, donc en particulier le répertoire racine "images".
C'est bien mon pb, comment exclure "tout sauf..."
Je ne sais pas si c'est possible avec rsync, mais ça l'est avec unison.
OK, mais je veux aussi .svn/blah, d'où le 2e *
Dans ce cas, le .svn** était incorrect. -- Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/> Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
On 2007-01-23 19:15:41 +0100, Daniel Caillibaud wrote:
J'ai essayé rsync -avn --exclude=* --include=pattern** path1 path2 => tout est exclu (en lisant le man je comprend pourtant pas ça, mais je dois mal comprendre).
Il ne faut pas oublier de quoter le *, soit par un \, soit avec des quotes. -- Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/> Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
Vincent Lefevre wrote:
On 2007-01-23 19:15:41 +0100, Daniel Caillibaud wrote:
J'ai essayé rsync -avn --exclude=* --include=pattern** path1 path2 => tout est exclu (en lisant le man je comprend pourtant pas ça, mais je dois mal comprendre).
Il ne faut pas oublier de quoter le *, soit par un \, soit avec des quotes.
Ca ne change rien -- Daniel
participants (3)
-
Daniel Caillibaud
-
Stephane Jourdois
-
Vincent Lefevre