Linux 如何防止tar提取覆盖符号链接目录
注意:tar版本1.27或更高版本会覆盖符号链接 下面我试图说明问题到底是什么 目录1的内容Linux 如何防止tar提取覆盖符号链接目录,linux,bash,unix,tar,centos7,Linux,Bash,Unix,Tar,Centos7,注意:tar版本1.27或更高版本会覆盖符号链接 下面我试图说明问题到底是什么 目录1的内容 file1.txt file2.txt 创建上述目录的代码 rm -f -r dirtmp1 && mkdir dirtmp1 && cd dirtmp1 && touch file1.txt && touch file2.txt && ls -al 创建符号链接 cd .. ln -s dirtmp1/ symlink
file1.txt
file2.txt
创建上述目录的代码
rm -f -r dirtmp1 && mkdir dirtmp1 && cd dirtmp1 && touch file1.txt && touch file2.txt && ls -al
创建符号链接
cd ..
ln -s dirtmp1/ symlink1
现在创建tar文件,其中包含名称symlink1
mkdir dirtmp1
cd dirtmp1
mkdir symlink1 && cd symlink1 && touch iNeedThisfile.txt && cd .. && tar -cvzf symlink1.tar.gz symlink1/
提取文件夹(symlnk1)中的tar文件将覆盖符号链接。我只想保留符号链接并复制“inedthisfile.txt”
在运行这个命令之后,tar-xvf symlink1.tar.gz
symlink1:
总数0
-rw-r--r--1根根目录0 Mar 24 18:14 inedthis file.txt
提取时保留符号链接的任何标志。并将文件复制到符号链接指向的文件夹中
我很抱歉不能用更少的文字表达我的信息。我也有同样的问题。在我的例子中,tar1.23具有正确的行为(保留符号链接),而1.26具有“新”的行为(删除符号链接并创建目录) 我发现在摘录的tar中添加-h标志就可以了。符号链接将被保留,文件将添加到它所指向的目录中 例如,我必须从
tar zxf foo.tar.gz
到
我使用的是Debian,Brian提供的答案对我不适用。再次阅读OP,我现在意识到OP想要保留目录的符号链接,而我想要保留每个单独文件的符号链接。但由于这是我在这方面发现的唯一一个成功案例,而且我已经打印出了我的答案,因此我将提供它,以保留每个文件的符号链接 这就是我找到的解决方案 首先,我的Debian,正如我们所说:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster
我的tar是1.30+dfsg-6:
$ apt-cache policy tar
tar:
Installed: 1.30+dfsg-6
Candidate: 1.30+dfsg-6
Version table:
*** 1.30+dfsg-6 500
500 http://deb.debian.org/debian buster/main amd64 Packages
100 /var/lib/dpkg/status
我发现的是
将无法工作。以这种方式提取内容将删除符号链接tar-h-xvf symlink1.tar.gz
也不会工作。但是,tar-h--no overwrite dir-xvf symlink1.tar.gz
可以工作!以这种方式提取内容将保留每个文件的符号链接,但是tar-h--overwrite-xvf symlink1.tar.gz
将不起作用。也就是说,适用于tar-h--overwrite-xvJf symlink1.tar.xz
的文件将不适用于.tar.gz
文件.tar.xz
HTH适用于希望保留每个单独文件的符号链接的任何人。您确定这不起作用吗?这在CentOS 5机器上对我有效。你想从tar文件中提取一个文件吗
tar-xvf{symlink1.tar.gz}{path/to/file}
@Etan-Reisner不,它不在centos 7,tar版本1上工作。26@Hidd3n我不想提取单个文件,但在提取时不想覆盖指向该文件的符号链接。为什么要将tar提取到另一个不退出符号链接文件的路径?@Brain非常感谢您的回复,我阅读了文档,但没有看到-h标志。我将尝试以下方法:)添加-h标志在tar版本1.26中对我不起作用。Centos 7。提取内容会删除符号链接:(适用于REHL 7。那篇sh*t文章让我沮丧了两天。+1我不知道它适用于哪个操作系统,但我使用@forum.test17——它在我的Debian中不起作用,正如我们所说的tar 1.30+dfsg-6。使用tar-h-zxf
提取内容也会删除符号链接。
$ apt-cache policy tar
tar:
Installed: 1.30+dfsg-6
Candidate: 1.30+dfsg-6
Version table:
*** 1.30+dfsg-6 500
500 http://deb.debian.org/debian buster/main amd64 Packages
100 /var/lib/dpkg/status