Prevent parent directories from being tarred Prevent parent directories from being tarred shell shell

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:

  1. cd down to the directory you wish to be top level, i.e...

    cd /var/lib/mysql

  2. Remove parent directories from your tar command

    /var/lib/mysql/DATABASE_NAME becomes just DATABASE_NAME

More details can be found in this blog writeup.