-   Linux - General (
-   -   Strange behavior of tar (

frankieboy 10-15-2003 02:54 PM

Strange behavior of tar
Hello forum,

I write a short script which automates some backup-jobs. I describe my problem by an example.

find /etc -print > /tmp/backup.list

gives me a list of all files to back up (I want to perform incremental backups using the option -mtime -1).
Then I pack them into an tar.bz2 with the following command:

tar -cjv -T /tmp/backup.list -f backup.tar.bz2

If I look over the resulting archive I realize that the directories below /etc are stored twice in the archive. The next directorylevel is stored three times, so that

tar -tjf backup.tar.bz2|grep XF86Config

shows this file three times.

In /tmp/backup.list every file is present just one time!

In this case I'm really helpless and need your kindly advice.

:scratch: Frank Becker

dorian33 10-15-2003 04:12 PM

Everything is OK. If you tar /xxx all the files and directories will be tared. Next you add /xxx/yyy so you make additional backup for subdir :)

jrmann1999 10-15-2003 04:33 PM

Thanks to dorian above, he's right. Tar is seeing directory names like /etc/X11 and tarring the whole thing, then it's tarring the individual files within that directory. Just use:

tar -cjvf backup.tar.bz2 /etc

tar is smart enough to recurse subdirectories automatically and add files there.

You could still use your find /etc -print > backup.list for verification of archives.

frankieboy 10-16-2003 03:31 AM

Thanks jrmann,

now I know why there are duplicate entries in the tar-archive.

But, do you have any solution to perform incremental backups with find/tar? I don't want to save the complete directory with all files if there is any file to backup. In this case, if there are any changes in /etc/X11/XF86Config I just want to backup the entiere file and not the whole directory.

Thanks for your help


jrmann1999 10-16-2003 01:53 PM

Your best bet would be to use rsync, it has an incremental backup mode and checks a variety of conditions based on whatever you specify(hint, man rsync). You could create a folder that you would purge->rsync->tar daily for incremental backups of a non-critical nature. There are many well documented solutions involving rsync(and tar if you choose to go that route) if you just google a bit.

All times are GMT -5. The time now is 10:27 PM.