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

관련 정보