53

Is it possible and how can I zip a symlink from a linux shell?

65

You can store symlinks as symlinks (as opposed to a copy of the file/directory they point to) using the --symlinks parameter of the standard zip.

Assuming foo is a directory containing symlinks:

zip --symlinks -r foo.zip foo/

Rar equivalent:

rar a -ol foo.rar foo/

tar stores them as is by default.

tar czpvf foo.tgz foo/

Note that the symlink occupies almost no disk space by itself (just an inode). It's just a kind of pointer in the filesystem, as you probably know.

  • 1
    i can't use tar, but the --symlinks is not working with zip. are you sure it's the default zip package? – DucDigital May 3 '11 at 3:33
  • Which distribution you've got? Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license. Zip 3.0 (July 5th 2008). Can you use rar instead? See added example. – Eduardo Ivanec May 3 '11 at 3:39
  • Copyright (c) 1990-2006 Info-ZIP. All rights reserved. This is Zip 2.32 probably because of this. i will try rar – DucDigital May 3 '11 at 4:03
  • 1
    Splitting hairs, but technically the symlink does occupy disk space, consuming an inode. – ttyS0 May 3 '11 at 4:06
  • True that. Actually from what I read in the past they were even more like regular files containing the path to the pointed file/directory. Now they're just a special kind of inode if I remember correctly. – Eduardo Ivanec May 3 '11 at 4:13
10

On RHEL 5, we have

$ zip -h
Copyright (C) 1990-2005 Info-ZIP
Type 'zip "-L"' for software license.
Zip 2.31 (March 8th 2005). Usage:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
(snip)
  -y   store symbolic links as the link instead of the referenced file
  • Same on OpenSUSE Leap. So it's indeed zip -y -r foo.zip foo/. – David Faure Jun 12 at 13:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.