注意:从 tar 版本 1.27 或更高版本开始覆盖符号链接(symbolic link)
下面我试图说明问题到底是什么。
dirtmp1 的内容
file1.txt
file2.txt
创建上述目录的代码
rm -f -r dirtmp1 && mkdir dirtmp1 && cd dirtmp1 && touch file1.txt && touch file2.txt && ls -al
创建符号链接(symbolic link)
cd ..
ln -s dirtmp1/ symlink1
现在创建包含名称为 symlink1 的 tar 文件
mkdir dirtmp1
cd dirtmp1
mkdir symlink1 && cd symlink1 && touch iNeedThisfile.txt && cd .. && tar -cvzf symlink1.tar.gz symlink1/
提取文件夹 (symlnk1) 中的 tar 文件正在覆盖符号链接(symbolic link)。我想要的只是保留符号链接(symbolic link)并复制“iNeedThisfile.txt”
运行此命令后 tar -xvf symlink1.tar.gz
符号链接(symbolic link) 1:
总计 0
-rw-r--r-- 1 root root 0 Mar 24 18:14 iNeedThisfile.txt
提取时保留符号链接(symbolic link)的任何标志。并将文件复制到符号链接(symbolic link)指向的文件夹中。
对于无法用更少的文本行传达我的信息,我深表歉意。
最佳答案
我遇到了同样的问题。就我而言,tar 1.23 具有正确的行为(保留了符号链接(symbolic link)),而 1.26 具有"new"行为(删除了符号链接(symbolic link)并创建了一个目录)。
我发现在 EXTRACT 上的 tar 中添加 -h 标志可以完成这项工作。保留符号链接(symbolic link)并将文件添加到它指向的目录。
例如,我必须从
tar zxf foo.tar.gz
到
tar -h -zxf foo.tar.gz
关于linux - 如何防止 tar 提取覆盖符号链接(symbolic link)目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29239081/