[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: tar up a symbolic linked directory



"Douglas A. Tutty" <dtutty@vianet.ca> writes:

>On Sat, May 02, 2009 at 09:04:38PM +0000, T o n g wrote:
>> Hi, 
>> 
>> I want to tar up a symbolic linked directory as if it is a real
>> directory. Is there any easy way to do it?
>> 
>> Let me explain with an example (that you can try):
>> 
>>  mkdir d1
>>  touch d1/{a,b,c}
>>  ln -s c d1/d
>>  ln -s d1 d2
>> 
>> I want that the result tar file looks like this:
>> 
>>  tar -tvzf d2.tgz
>>  drwxrwx--x tong/tong         0 2009-05-01 09:38 d2/
>>  -rw-rw---- tong/tong         0 2009-05-01 09:37 d2/a
>>  -rw-rw---- tong/tong         0 2009-05-01 09:37 d2/b
>>  -rw-rw---- tong/tong         0 2009-05-01 09:37 d2/c
>>  lrwxrwxrwx tong/tong         0 2009-05-01 09:38 d2/d -> c
>> 
>> Any easy way to do it? 

>add -h to the tar parameters.  It dereferences the symbolic lyinks.
>However, then you won't get the d2/d -> c reference.

I can't see that it would be possible to dereference the top-level
symlink but no others. No commands that I know of support selective
symlink dereferencing, except find(1) with -H.

That lead me to try:
$ find -H d2 | cpio -o -L -H ustar > d2.tar

This comes close, storing d2/d as a link, but as a hardlink, not a
symlink.


Reply to: