Prevent parent directories from being tarred
The parent directory (/var/some/log
) is included, since /var/some/log/path/..
is included when you do ./*
. Try just doing
tar -cjf archive.tar.bz2 -C /var/some/log/path .
Test run:
$ find tmp/some_filestmp/some_filestmp/some_files/dir1tmp/some_files/dir1/dir1filetmp/some_files/hellotmp/some_files/worldtmp/some_files/dir2tmp/some_files/dir2/dir2file$ tar -cvjf archive.tar.bz2 -C tmp/some_files/ .././dir1/./dir1/dir1file./hello./world./dir2/./dir2/dir2file$ cd tmp/unpacked/tmp/unpacked$ mv /home/aioobe/archive.tar.bz2 ./tmp/unpacked$ tar -xvjf archive.tar.bz2 ././dir1/./dir1/dir1file./hello./world./dir2/./dir2/dir2file/tmp/unpacked$ lsarchive.tar.bz2 dir1 dir2 hello world/tmp/unpacked$
There's a much easier way to do this:
cd
down to the directory you wish to be top level, i.e...cd /var/lib/mysql
Remove parent directories from your tar command
/var/lib/mysql/DATABASE_NAME
becomes justDATABASE_NAME
More details can be found in this blog writeup.