83

I have a directory with symbolic links to other directories. I want to archive the symbolic links, not as links but as archives containing the files of directories they refer to, using tar command. How can I do this?

2 Answers 2

126

Use the -h tar option. From the man page:

-h, --dereference
    don't archive symlinks; archive the files they point to
3
  • 4
    If I have /sym1 points to /backups and /sym2 points to /backups, then I run tar -hcf file.tar /sym1 /sym2 will I get /backups twice? Jan 28, 2015 at 23:55
  • @FelipeAlvarez -L counts files once, -l multiple times. See here.
    – Suuuehgi
    Apr 11, 2018 at 22:02
  • 2
    the order of options matters. ie tar -czfvh will fail tar -hczfv will work
    – til
    Jan 26, 2023 at 12:49
3

If the links are all in the root directory you can have the shell dereference them and pass to tar as arguments. For example if you have /backup/source/a and /backup/source/b, both of which are symlinks pointing to the real directory, something like the following would work

tar -cf /path/to/backup.tar /backup/source/*/
1
  • Doesn't work here. Seems like tar -cf /path/to/backup.tar /backup/source/a/ alone doesn't even work when a is a symlink.
    – Zero3
    Jan 3, 2016 at 19:52

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .