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 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 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 ;-)
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 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).
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 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*'
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 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...
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.
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 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