Find
如何使用 cpio 將壓縮的 tar 提取到特定目錄位置
我使用以下命令創建了壓縮的 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
文件?
第一個命令創建一個
cpio
具有絕對文件名的壓縮格式存檔。這意味著當您提取文件時,它們將被放置在那些絕對位置請注意,
cpio -o
寫入cpio
-format 存檔,而不是 -format 存檔tar
。您應該使用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
甚至
tar
直接使用 GNU,如果你有的話tar -C / -f /app/patchbkp/test/REDHAT_jboss-eap-7.2_18-Aug-2020.tar.gz -cv --exclude '*.log' --exclude '*.err' app/jboss