Normally, when tar archives a symbolic link, it writes a
block to the archive naming the target of the link. In that way, the
tar archive is a faithful record of the file system contents.
--dereference (-h) is used with --create (-c), and causes
tar to archive the files symbolic links point to, instead of
the links themselves. When this option is used, when tar
encounters a symbolic link, it will archive the linked-to file,
instead of simply recording the presence of a symbolic link.
The name under which the file is stored in the file system is not
recorded in the archive. To record both the symbolic link name and
the file name in the system, archive the file under both names. If
all links were recorded automatically by tar, an extracted file
might be linked to a file name that no longer exists in the file
If a linked-to file is encountered again by tar while creating
the same archive, an entire second copy of it will be stored. (This
might be considered a bug.)
So, for portable archives, do not archive symbolic links as such,
and use --dereference (-h): many systems do not support
symbolic links, and moreover, your distribution might be unusable if
it contains unresolved symbolic links.
Published under the terms of the GNU General Public License