Need help of exclusion options in rsync-3.0.6

Matt McCutchen matt at
Sun Jul 26 15:45:09 MDT 2009

On Sun, 2009-07-26 at 21:37 +0530, Jignesh Shah wrote:
> I have a situation where I want to delete some of my excluded patterns
> but still want to preserve some other. For example consider below
> source and destination directory hierarchy.
>   Source                    Dest
>   ----------                   ---------
> /foo/bar/                  /foo/bar/
>     | -> baz                  | -> baz
>     | -> xyz                  | -> xyz
>     | -> abc                  | -> abc
>                                  | -> old-baz
> I am below comand using --delete-excluded  and as a result rsync
> deletes exluded directories "baz" and "abc" and also deletes
> "old-baz". I want to preserve the "old-baz" and "baz" directories on
> destination side and want "abc" to gets deleted. Could you tell me how
> to tell rsync to do this?
> rsync -avz /foo/bar/ --delete-excluded --exclude=/baz --exclude=/abc
> desthost:/foo/bar/

Recall that an exclude filter is shorthand for a hide plus a protect if
--delete-excluded is off, or just a hide if it is on..  Since you want
some of your filters to protect destination files from deletion but not
others, your best bet would be to drop the --delete-excluded and specify
individual hide, protect, and plain exclude (hide+protect) filters.  For
more detail, carefully read the "FILTER RULES" section of the man page.

Something like the following should do what you described:

rsync -avz /foo/bar/ --exclude=/baz --filter='H /abc' \
	--filter='P /old-baz' desthost:/foo/bar/


More information about the rsync mailing list