linux - 如何防止 tar 提取覆盖符号链接(symbolic link)目录

标签 linux bash unix tar centos7

注意:从 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/

相关文章:

linux - 如何在 Linux 的目录中找到所有不可执行的文件?

linux - ov5642 无法以 30fps 工作

linux - bash脚本调用另一个应用程序时如何向stderr输出添加附加信息

linux - 询问收件人、主题和正文的 Bash 邮件脚本

linux - 如何根据ips、域和url过滤apache访问日志?

python - AWS elastic beanstalk 上的 tensorflow GPU - 调用 "python"+ "sudo"时出现 tf 导入错误(libcublas.so.9.0 错误)

bash - 如何用 0 替换不存在的值?

linux - 通过域套接字传输的单个数据包大小的实际限制是多少?

用于解析文件 ( csv ) 并逐行处理的 Shell 脚本

Unix - 如何在一个目录中获取多个 shell 脚本?