On Thu, Jun 16, 2005 at 10:00:07AM +0200, fRANz wrote:> rsync -avzHP --include "3.4/" --include "3.4/**"
--include "4.0/"
> --include "4.0/**" --exclude "*" --bwlimit=30
> rsync.example.foo::packages/centos/* .
An easier way to do this is to use:
--include=/3.4/ --include=/4.0/ --exclude='/*'
That anchors the dirs and the wildcard so that they only apply to the
root of the transfer (making the ** includes unnecessary). Also, you
are usually better off just using a trailing slash at the end of a
directory arg instead of specifying a '*' after it.
> I would like to rsync only dirs "xxx" and "yyy" from
3.4 and 4.0, for example:
>
> /packages/centos/3.4/someone/xxx/ - yes
> /packages/centos/3.4/someone/ - no
> /packages/centos/4.0/someone/xxx/ - yes
> /packages/centos/4.0/sometwo/yyy/ - yes
This works in a similar way to the example above -- specify what you
want to include at a particular level, and then exclude everything else
at that level. As long as the source arg contains
"/packages/centos/",
your include/exclude rules would look like this (I'm switching to the
exclude file format):
+ /3.4/
+ /3.4/someone/
+ /3.4/someone/xxx/
- /3.4/someone/*
- /3.4/*
+ /4.0/
+ /4.0/someone/
+ /4.0/someone/xxx/
- /4.0/someone/*
+ /4.0/sometwo/
+ /4.0/sometwo/yyy/
- /4.0/sometwo/*
- /4.0/*
- /*
Another solution might be to use --files-from combined with -r. Since
the --relative option gets turned on, the paths from the args gets used
in the destination. Put this in a file "mylist":
/3.4/someone/xxx
/4.0/someone/xxx
/4.0/sometwo/yyy
And then run this:
rsync -avzHPr --files-from=mylist --bwlimit=30 host::packages/centos/ .
..wayne..