Exclude not working

Matt McCutchen hashproduct+rsync at gmail.com
Mon Jul 9 22:18:10 GMT 2007


On 7/9/07, Giuliano Gavazzi <dev+lists at humph.com> wrote:
>
> On 9 Jul 2007, at 08:17, Madhavan Chari wrote:
>
> > This is how I am trying to exclude the directories. All the
> > directories have sub-directories also.
> >
> > E1=/opt/mscdr/arb821/Server/transmissionData
> > E2=/opt/mscdr/arb821/Server/logs
> > E3=/opt/mscdr/arb821/Server/temp
> > E4=/opt/mscdr/arb821/Server/altavista
> >
> > rsync -az -t -e ssh -vv --delete --exclude $E1  --exclude $E2 --
> > exclude $E3 --exclude $E4  --delete-excluded --bwlimit=1000
> > $HOSTTOBACKUP:$SOURCE $TARGET >$tempfile 2>&1
>
> you did not append "/" to your exclude patterns and you did not show
> us the value of the SOURCE macro. Either might explain the failure.

All a trailing "/" would do is prevent the pattern from matching a
non-directory, so its absence can't be the problem.  More likely is
the $SOURCE.  Rsync interprets an exclude pattern that begins with /
relative to the root of the transfer, i.e., $SOURCE.  Thus, if $SOURCE
is (say) /opt/mscdr/arb821/ , then the exclude patterns should be
given as:

E1=/Server/transmissionData
E2=/Server/logs
E3=/Server/temp
E4=/Server/altavista

Alternatively, you can keep the patterns as they are but tell rsync to
interpret them from the root of the filesystem by using --filter with
the / modifier:

rsync (...) --filter="-/ $E1" --filter="-/ $E2" --filter="-/ $E3"
--filter="-/ $E4"

If you have a lot of exclude patterns, consider putting them in an
exclude file instead of giving them all on the command line.

Matt


More information about the rsync mailing list