Amanda calls tar like this:
| tar -v --create --file /dev/null --directory / --one-file-system --sparse
--ignore-failed-read --totals --exclude-from
/tmp/amanda/sendbackup._.20061017012636.exclude --listed-incremental /tmp/xxx .
If `--listed-incremental /tmp/xxx' is removed, --one-file-system works
correctly.
The code to decide whether to include a child directory or not looks
like (src/incremen.c:procdir()):
| if (one_file_system_option && device != stat_data->st_dev
| /* ... except if it was explicitely given in the command line */
| && !((np = name_scan (name_buffer, true)) && np->explicit))
| directory->children = NO_CHILDREN;
| else if (children == ALL_CHILDREN)
| directory->children = ALL_CHILDREN;
The third condition `!((np = name_scan (name_buffer, true)) && np->explicit)'
(which was not present in tar 1.14!) causes the problem. For e.g. name_buffer =
"./home" (which is on a separate partition), struct name pointed to by np looks
like:
np->name = "."
np->explicit = 1
np->matching_flags = 40000008
If I replace the `.' (final argument) in the tar command line above by
`/', name_scan("./home", true) returns NULL and the directory is not
included. However, this should give the exact same results, as I'm backing up
the root file system.
So it looks like a bug in name_scan().
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [EMAIL PROTECTED]
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
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]