Is it possible and how can I zip a symlink from a linux shell?
2 Answers
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.
-
1i can't use tar, but the --symlinks is not working with zip. are you sure it's the default zip package? May 3, 2011 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. May 3, 2011 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 May 3, 2011 at 4:03
-
1Splitting hairs, but technically the symlink does occupy disk space, consuming an inode.– ttyS0May 3, 2011 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. May 3, 2011 at 4:13
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