From owner-freebsd-questions@FreeBSD.ORG Mon Mar 20 11:50:17 2006 Return-Path: X-Original-To: freebsd-questions@freebsd.org Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3970316A42C for ; Mon, 20 Mar 2006 11:50:17 +0000 (UTC) (envelope-from xfb52@dial.pipex.com) Received: from asmtp-out6.blueyonder.co.uk (asmtp-out6.blueyonder.co.uk [195.188.213.65]) by mx1.FreeBSD.org (Postfix) with ESMTP id 98A8E43D4C for ; Mon, 20 Mar 2006 11:50:15 +0000 (GMT) (envelope-from xfb52@dial.pipex.com) Received: from [82.41.229.4] (helo=[192.168.0.2]) by asmtp-out6.blueyonder.co.uk with esmtp (Exim 4.52) id 1FLItp-0005iz-EM; Mon, 20 Mar 2006 11:50:13 +0000 Message-ID: <441E96F5.1080506@dial.pipex.com> Date: Mon, 20 Mar 2006 11:50:13 +0000 From: Alex Zbyslaw User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-GB; rv:1.7.12) Gecko/20060305 X-Accept-Language: en MIME-Version: 1.0 To: parv@pair.com, Pat Maddox References: <810a540e0603191355n3e86fe15pa15a24da1a48dce8@mail.gmail.com> <20060319224418.GC4787@holestein.holy.cow> In-Reply-To: <20060319224418.GC4787@holestein.holy.cow> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: FreeBSD Questions Subject: Re: rsync script not excluding dirs X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Mar 2006 11:50:17 -0000 Parv wrote: >in message <810a540e0603191355n3e86fe15pa15a24da1a48dce8@mail.gmail.com>, >wrote Pat Maddox thusly... > > >>I have a backup script that runs nightly, and I want it to exclude >>certain dirs (ports, obj, etc). However when I run the script it >>doesn't exclude anything, leaving me with pretty massive backups. >> >> >... > > >>/, /var, /usr, and /backup are all on different partitions. The key >>part is at the bottom where it calls rsync and excludes dirs. Can >>someone tell me what's wrong with the script? >> >> >... > > >>PRE="/usr/local/bin/rsync" >>${PRE} -bapoguLxSRC --exclude=*.core --exclude=*~* / --exclude=/dev >>--exclude=/backup /backup/${DAY1}/ >>${PRE} -bapoguLxSRC --exclude=*.core --exclude=*~* /var /backup/${DAY1}/ >>${PRE} -bapoguLxSRC --exclude=*.core --exclude=*~* --exclude=/usr/src >>--exclude=/usr/ports --exclude=/usr/obj /usr /backup/${DAY1}/ >> >> > >Your script seems to have wrapped by your mail client. > >Anyway, in rsync(1) man page, see "INCLUDE/EXCLUDE PATTERN RULES" >section, point 2 ... > > o if the pattern ends with a / then it will only match a direc- > tory, not a file, link, or device. > > >In other words, none of your exclude patterns for directories end in >'/' , thus the backup, src, ports, etc. directories are not >excluded. > > I'm not sure that's true. It says a pattern ending in slash only matches a directory, it doesn't say that a pattern not ending in slash won't match a directory. However, the patterns are anchored wrongly. Absolute patterns are still relative to to tree being transferred. So --exclude=/usr/obj when transferring /usr would try to match /usr/usr/obj, which is wrong. Take the name of the filesystem being rsynced off those patterns and you should find them excluded as you want. The rsync man page does try to explain this: it is a bit long and can take a few reads, but look at the FILTER RULES and ANCHORED PATTERNS... sections. --Alex PS Your flags are way over the top. -a already includes -rlptgoD so you don't need them again. Do you really want -R and I think that knocks the top-level directory off the files which are unpacked? And if this is a backup, then why -u? That's for use when you are changing files on the destination and don't want those changes overwritten, which doesn't sound like what you are doing. And if it is a backup, then you might also want -H to preserve hard links.