我使用以下命令创建了压缩的 tar 文件。
find /app/jboss -not -name "*.err" -not -name "*.log" | cpio -o | gzip >/app/patchbkp/test/REDHAT_jboss-eap-7.2_18-Aug-2020.tar.gz
我在这里得到了压缩文件
[user1@myhost test]$ ls -ltr /app/patchbkp/test/REDHAT_jboss-eap-7.2_18-Aug-2020.tar.gz
-rwxrwxr-x 1 user1 mygrp 363997224 Aug 18 16:08 /app/patchbkp/test/REDHAT_jboss-eap-7.2_18-Aug-2020.tar.gz
我想提取/app/jboss
下面的目录,/app/patchbkp/test
这样我就得到了/app/patchbkp/test/app/jboss/.......
;因此我尝试以下命令。
cd /app/patchbkp/test/
zcat /app/patchbkp/test/REDHAT_jboss-eap-7.2_18-Aug-2020.tar.gz | cpio -i
但这不会生成任何文件/app/patchbkp/test
当我尝试时出现权限被拒绝错误gunzip /app/patchbkp/test/REDHAT_jboss-eap-7.2_18-Aug-2020.tar.gz
您能指导我如何解压目录/app/jboss
下的tar 压缩包吗?/app/patchbkp/test
答案1
第一个命令创建cpio
具有绝对文件名的压缩格式存档。这意味着当您提取文件时,它们将被放置在这些绝对位置
请注意,cpio -o
写入的是cpio
-format 存档,而不是tar
-format 存档。您应该使用cpio -o -H tar
-formattar
文件。
您的提取命令将起作用,但只能将文件写入文件系统上的绝对位置。您可以通过首先列出带有-t
标志的文件来查看会发生什么
zcat /app/patchbkp/test/REDHAT_jboss-eap-7.2_18-Aug-2020.tar.gz | cpio -it
我会推荐你的命令的这些变体
( cd / && find app/jboss -not -name "*.err" -not -name "*.log" | cpio -o -H tar ) | gzip >/app/patchbkp/test/REDHAT_jboss-eap-7.2_18-Aug-2020.tar.gz
或者甚至直接使用 GNU(tar
如果有的话)
tar -C / -f /app/patchbkp/test/REDHAT_jboss-eap-7.2_18-Aug-2020.tar.gz -cv --exclude '*.log' --exclude '*.err' app/jboss