cpioを使用して圧縮tarを特定のディレクトリ位置に抽出する方法

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

ここにzipファイルがあります。

[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絶対ファイル名を使用して圧縮形式のアーカイブを作成します。つまり、ファイルを抽出すると、これらの絶対位置に配置されます。

-formatアーカイブは、-formatアーカイブではなく-formatアーカイブとしてcpio -o作成されます。 -formatファイルを使用する必要があります。cpiotarcpio -o -H tartar

extract コマンドは機能しますが、ファイルシステムの絶対位置にのみファイルを書き込みます。-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

関連情報