tar Syntax Help

Matt Emmerton matt at gsicomp.on.ca
Fri Jul 8 04:33:24 GMT 2005

> On 7/7/2005 8:38 PM Matt Emmerton wrote:
> >
> >>I'm trying to copy an entire file system while using an exclude file to
> >>avoid copying things such as /dev, /proc, etc.  I've read the man page
> >>and found the -X or --exclude-from tar option.  I've create a file
> >>called /exclude.list.  It contains lines such as:
> >>
> >>/exclude.list
> >>/dev
> >>/proc
> >>
> >>But I can't figure out how to form the correct command line.  I
> >>basically want to do this:
> >>
> >>tar -cvf - --exclude-from /exclude.list -C / . | tar xpf - -C .
> >>
> >>I've search the web and found examples that look similar to the above
> >>but this does not work for me.  tar attempts to copy /dev and I get all
> >>the associated errors.  I've tried other placements of either "-X", "X",
> >>and "--exclude from" on the command line various things happen from it
> >>just being ignored to tar thinking I want to create and archive named
> >>"-X", etc., to tar trying to add a file named "-X", etc. to the current
> >>archive.  I'm at a loss.
> >>
> >>I'm using 4.11 and trying to make a good backup before upgrading to
> >>5.4.  Can anyone tell me the secret incantation to make this work?
> >>
> >>
> >
> >-X only works with specific files, not entire directories.  You will need
> >list every file in /dev or /proc that you want to exclude, which is
> >painful.
> >
> >The backup strategy that I've used on production systems is to back up
> >directory in a separate tar file.  Not only does this work quicker (since
> >you can fire off multiple tar sessions in parallel), but you can avoid
> >"special" directories like /dev and /proc, temporary mount points such as
> >/cdrom and /mnt, and other directories that don't need to backed up, such
> >/tmp.  It's also quite handy when you've got large volumes of data (such
> >in /home) and the complete system image won't fit on a single tape.
> >
> >The general notion of my script is the following:
> >
> >#!/bin/sh
> >for i in bin boot etc home modules root sbin usr var
> >do
> >  tar cvzf /backups/$i.`date +%Y%m%d`.tar.gz $i &
> >done
> >wait
> >echo "Backups completed!"
> >
> Thanks for your reply.  I can do it this way and will for the sake of
> speed.  However this post suggests that one can use wildcards.
> http://lists.freebsd.org/pipermail/freebsd-questions/2004-July/052207.html
> Have you ever tried that?  I did but was not successful.

I just tried this out (on 5.4-REL) and the wildcards appear to work fine.
If you specify wildcards on the command line (ie, with --exclude or -X), you
must quote them to prevent premature expansion.


More information about the freebsd-questions mailing list