I use the following pseudo-script to create a TAR of my installed software
mkdir tmp
ln -s /path/to/app1/bin tmp/app1
ln -s /and/path/going/to/the-app-2 tmp/app2
tar -c --dereference -f apps.tar tmp
I need the --dereference
option here to follow the links I just made in tmp
. The reason I make the links in the first place is to store the directories with a different name in the archive than they have on the filesystem.
Until now it has worked fine. However, I now have the situation that /path/to/app1
also contains links, and those I don't want to follow.
Is this possible with some changes to the tar
command? Or do I need to completely switch around the way I build the archive?
I don't think there is a way to do have just a partial dereference. You could do something like
and then to extract them to a different root using -C
e.g.
which would have a similar effect to the way you currently create your archive.
You can use the -C to point to any existing directory too.
Do you really need the directory structure in the tarball to be different than it is on disk?
If not, then you can just tar them up as-is:
Instead of linking, I could copy. Unfortunately it would add some more overhead (the files are rather big). Of course it would grow at most twice as big, since the tarring itself is also a form of copying.
If you're
root
then your best bet is to use mount's bind command to basically hard link the directories you want to tar up, rather than symlinking to them. Then you won't need to use the dereference option.Be sure to unmount those directories before anything accidentally happens to them. See these warnings.