On Wed, Oct 24, 2001 at 12:42:29PM -0500, Justin Banks wrote: > >>>>> "Dave" == Dave Dykstra <[EMAIL PROTECTED]> writes: > Dave> The way to recursively delete a single directory while ignoring the > Dave> rest is: > > Dave> mkdir /tmp/empty rsync -a --delete --include "/directorytodelete**" > Dave> --exclude "*" \ /tmp/empty/ Dave> foo@wherever::module > > This works, if there's nothing else on the receiving side that you want to > keep (unless I'm doing it wrong). In other words, if the sending side looks > like this : > > [root@r1c3n104 foo]# ls -l /tmp/foo > total 4 > drwxr-xr-x 2 root root 4096 Oct 24 12:32 bleen > -rw-r--r-- 1 root root 0 Oct 23 15:27 fred > > and the remote side looks like this : > > [root@r1c1n130 /tmp]# ls -l /tmp/foo > total 8 > drwxr-xr-x 2 root root 4096 Oct 24 12:34 bleen > drwxr-xr-x 2 root root 4096 Oct 24 11:52 bob > -rw-r--r-- 1 root root 0 Oct 24 12:31 fred > > > and I want to remove /tmp/foo/bob on the remote side without walking the > entire /tmp/foo/bleen directory, which may contain several hundred gigabytes, > I can follow your suggestion, as follows : > > [root@r1c3n104 foo]# rsync -a --delete --include "/tmp/foo/bob**" -exclude "*" > /tmp/empty/ [EMAIL PROTECTED]::module/tmp/foo/ > > but then the remote side ends up like this : > > [root@r1c1n130 /tmp]# ls -l /tmp/foo > total 0 > > ;(
The filename paths that the exclude algorithm sees are relative to the destination path, they do not include it. It should work if you use --include "/bob**". The slash at the beginning does not indicate the root of a filesystem, it indicates "match only the beginning of a path". > What I want to be able to do is have the initial picture as above, and run > something like this (/tmp/foo/bob doesn't exist on the sending side) : > > [root@r1c3n104 foo]# /tmp/rsync -d --delete --force --delete-after /tmp/foo/bob > [EMAIL PROTECTED]::module/tmp/foo > > and have the remote side end up like this : > > [root@r1c1n130 /tmp]# ls -l /tmp/foo/ > total 4 > drwxr-xr-x 2 root root 4096 Oct 24 12:36 bleen > -rw-r--r-- 1 root root 0 Oct 24 12:36 fred > > without walking the /tmp/foo/bleen tree at all. This seems to make lots of > sense to me. It seems like the intuitive thing to do. You ought to be able to > sync something that doesn't exist on the sending side, and have it go away on > the remote side, without wierd extra voodoo. > > Anyway, as I said, I have a patch to make this work, and I'd rather it went > in, 'cause then I wouldn't be out of synch with the rest of the world ;) I'm not the official maintainer anymore, but I think there's little chance of your patch being accepted. - Dave Dykstra