How to dereference links when extracting from a tar file

filessymlinktar

If I have a tar file, bob.tar, which contains real_file and link_to_real_file, in which the latter is a symlink, is there a way to extract the contents of bob.tar so that link_to_real_file will not be a symlink, but be a copy of real_file.

I know this is indeed possible on the creation side, if I use the -h flag.

The command tar -cvhf bob.tar real_file link_to_real_file will dereference link_to_real_file, but I want to do this on the extraction side regardless of how the tar file was created.

Best Answer

Mount the archive as a directory, for example with AVFS, then use your favorite file copying tool.

mountavfs
cp -RLp ~/.avfs$PWD/bob.tar\# target-directory/