通过一个小实验验证 zip和tar如何处理 符号链接
建立一个目录如下
payne@payne-desktop:~/ziptest/1$ ls -l
total 4
drwxr-xr-x 2 payne payne 4096 2013-09-05 17:07 a
lrwxrwxrwx 1 payne payne 7 2013-09-05 17:07 a.link -> a/a.txt
lrwxrwxrwx 1 payne payne 17 2013-09-05 17:08 jb.sh -> /home/payne/jb.sh
zip
用下面命令打包文件
zip -r 1.zip 1/
在win7 上解开发现,symbol link 都被真实文件替代了
看 zip 的 help 原来有 -y 参数,指定处理 symbol link, 用下面的重新打包
zip -ry 1.zip 1/
在win7 上解压发现,symbol link 都变成了小的文本文件
其文本内容如下:
--- a.link ---
a/a.txt
--- jb.sh ---
/home/payne/jb.sh
到另外一台 linux 上用 unzip 解压此文件
symbol link 被还原
相对目录的 a/a.txt 是正常的符号链接, 而jb.sh 是错误,因为被link的文件不存在
tar
改用 tar 进行上面的测试, 发现tar是可以保存和还原 symbol link
打包命令:tar czvf 1.tar.gz 1
解包命令:tar xzvf 1.tar.gz
只是在 win7 中解开 1.tar.gz看, symbol link 是 0 字节, 而不像 zip 那样,保存为内容为被link文件路径的的文本
结论
tar 和 zip 都可以保存和还原符号链接,只是 zip 需要用 -y 参数,否则符号链接直接用被link文件替换