tar: Removing leading `/' from member names

root@server # tar fcz bkup.tar.gz /home/foo/
tar: Removing leading `/' from member names

How can I solve this problem and keep the / on file names ?

Asked By: superuser

||

Use the --absolute-names or -P option to disable this feature.

tar fczP bkup.tar.gz /home/foo
tar fcz bkup.tar.gz --absolute-names /home/foo
Answered By: Barmar

That’s actually a feature, not a problem. Archives with absolute locations are a security risk. Attackers could use such archives to trick users into installing files in critical system locations.

Yes, you could use -P. But what’s wrong with allowing tar to remove the forward slash, and simply requiring the user of the archive to explicitly do the extraction in the root directory? Then they’re consciously impacting critical system locations, and can’t do it by accident.

Answered By: Mark Adler

If you want to get rid of “Removing leading `/’ from member names” being printed to STDERR, but still want to leave off those leading slashes as tar wisely does by default, I saw an excellent solution here by commenter timsoft.

The solution involves using -C option to change directory to the root (/), then specifying the file tree to archive without a leading slash, because now you only need a relative path. This does the same thing as a normal tar create command, but no stripping is needed:

tar fcz bkup.tar.gz -C / home/foo/
Answered By: Marcus

This is how I did it by using brute force method: 2>&1 | grep -v "Removing leading".

For example:

tar -cf "$BKUPDIR/${BKUPFILE}.tar" --overwrite --exclude '.*' --one-file-system "$SRCDIR" 2>&1 | grep -v  "Removing leading"
Answered By: bjackfly

One month late, but I found the most appropriate solution for my case (in a shell script) is to go to the parent directory and execute the command there.

cd /var/www/
tar -czf mysite.gz mysite

Instead of:

tar -czf /var/www/mysite.gz /var/www/mysite
Answered By: amd

I solved this problem with:

cd /home/foo && tar czf ~/backup.tar.gz .

that way you aren’t trying to put absolute paths into the tar archive in the first place. If you want untar it at the root of the file system you just

cd / && tar xzf backupt.tar.gz after transferring it.

Answered By: James

Try to use -C for path only which would prevent compressing with complete paths:

root@server # tar fcz bkup.tar.gz -C /home/ foo/
Answered By: Nick Tsai

The path of the archive when specified causes this informational message, you can do the following to resolve it:

tar -zvcf /tmp/mike.tar.gz -P /tmp/mike

or

tar -zvcf mike.tar.gz -P /tmp/mike

or

tar -zvcf mike.tar.gz /tmp/mike

Note: it is not an error, just informational.

Answered By: Mike Q

its not a feature, its a bug. removing absolute paths creates an unextractable archive if path data gets fooey somehow. tar spits out the error and refuses to extract anything. better to use tardy to filter the path first.

Answered By: jnabbieru
Categories: Answers Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.