Amanda-Users

Re: tar escaping into a different file system

2006-07-31 13:30:20
Subject: Re: tar escaping into a different file system
From: Geert Uytterhoeven <geert AT linux-m68k DOT org>
To: Amanda Users <amanda-users AT amanda DOT org>
Date: Mon, 31 Jul 2006 19:24:02 +0200 (CEST)
On Mon, 31 Jul 2006, Jon LaBadie wrote:
> On Mon, Jul 31, 2006 at 09:52:10AM +0200, Geert Uytterhoeven wrote:
> > 
> > Finally I'm getting back on track after the tar 1.15.91-2 incremental 
> > changes.
> > Due to this issue and my yearly holidays, my backups are long overdue and
> > Amanda likes to do lots of level 0s (as expected).
> > 
> > I just noticed this in the mail log of last night's backup:
> > 
> > | /--  anakin / lev 0 FAILED [data write: Connection reset by peer]
> > | sendbackup: start [anakin:/ level 0]
> > | sendbackup: info BACKUP=/bin/tar
> > | sendbackup: info RECOVER_CMD=/bin/gzip -dc |/bin/tar -f... -
> > | sendbackup: info COMPRESS_SUFFIX=.gz
> > | sendbackup: info end
> > | ? gtar: ./proc/19106/fd/5: Warning: Cannot stat: No such file or directory
> > | ? gtar: ./proc/19106/task/19106/fd/5: Warning: Cannot stat: No such file 
> > or
> > | directory
> > | ? gtar: ./proc/6490/task/19182: Warning: Cannot stat: No such file or
> > | directory
> > | ? gtar: ./proc/6490/task/19182/attr: Warning: Cannot stat: No such file or
> > | directory
> > | ? gtar: ./proc/6490/task/19182/attr: Warning: Cannot stat: No such file or
> > | directory
> > | ? gtar: ./proc/6490/task/19182/fd: Warning: Cannot stat: No such file or
> > | directory
> > | ? gtar: ./proc/6490/task/19182/fd: Warning: Cannot stat: No such file or
> > | directory
> > | ? gtar: ./proc/asound/card0/pcm0p/sub1: file changed as we read it
> > | ? gtar: ./proc/irq/14/ide0: file changed as we read it
> > | ? gtar: ./proc/sys/fs/mqueue: file changed as we read it
> > | ? gtar: ./proc/sys/net/ipv6/conf/default: file changed as we read it
> > | | gtar: ./dev/gpmctl: socket ignored
> > | | gtar: ./dev/log: socket ignored
> > | \--------
> > 
> > Since /proc is on a separate file system, tar is not supposed to enter that
> > directory.
> > 
> > Anyone seen that before? I'm using tar 1.15.91-2 and amanda 1:2.5.0p2-1 (+ 
> > my
> > backport of the fixes for tar 1.15.91, cfr.
> > http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=378558), on Debian
> > testing/unstable.
> > 
> > Is this another tar 1.15.91 breakage?
> > 
> 
> Things to check might include:
> 
> Do the amanda debug files on the client show the tar argument list
> with the "-l" or "--one-file-system" argument.
> 
> Do you have any "include" directives.  Tar will happily go to other
> file systems if you specifically tell it to.  I once ran a DLE that
> covered 3 or 4 tiny file systems in one DLE by using / as the 
> starting directory and including /a, /b, /c, ... (the mount points).
> 
> If you run tar with the create and verbose (cv) options and the
> output is to /dev/null (f /dev/null), then tar will output the
> filenames of what it would backup, but doesn't.  It only visits
> the inodes, not the datablocks.  So you could try 1.15.91 manually
> and see if the output filenames include the /proc files.  Lots
> of output, so probably collect to a file and search with less or more.
> Also, don't forget the --one-file-system option.

According to the logs, it used

| running: /bin/tar: gtar --create --file - --directory / --one-file-system 
--listed-incremental /var/lib/amanda/gnutar-lists/anakin__0.new --sparse 
--ignore-failed-read --totals --exclude-from 
/tmp/amanda/sendbackup._.20060731014330.exclude .

If I manually run

|  tar -v --create --file /dev/null --directory / --one-file-system   --sparse 
--ignore-failed-read --totals --exclude-from 
/tmp/amanda/sendbackup._.20060731014330.exclude .

it doesn't visit /proc and says

| tar: ./proc/: file is on a different filesystem; not dumped

when noticing its existence.

However, if I add `--listed-incremental /tmp/xxx' it tells me:

| tar: ./bin: Directory is new
| tar: ./boot: Directory is new
| tar: ./build: Directory is new
| tar: ./dev: Directory is new
| tar: ./etc: Directory is new
| tar: ./home: Directory is new
| tar: ./initrd: Directory is new
| tar: ./lib: Directory is new
| tar: ./lost+found: Directory is new
| tar: ./media: Directory is new
| tar: ./mnt: Directory is new
| tar: ./none: Directory is new
| tar: ./proc: Directory is new
| tar: ./root: Directory is new
| tar: ./sbin: Directory is new
| tar: ./scratch: Directory is new
| tar: ./sys: Directory is new
| tar: ./tmp: Directory is new

and so on. And it enters e.g. /home, while /home is on a separate file system
(just like /boot, /usr, /var, /tmp).

Looks like tar 1.15.92 is seriously broken...

Bummer, it's even a known issue:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=376816
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=377124

Gr{oetje,eeting}s,

                                                Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert AT linux-m68k 
DOT org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                                            -- Linus Torvalds

<Prev in Thread] Current Thread [Next in Thread>