tar xf 명령으로 파일을 찾을 수 없음

tar xf 명령으로 파일을 찾을 수 없음

전체 tar.gz에서 파일을 추출하려고 하는데 작동하지 않습니다. 문제를 시뮬레이션하는 데 사용하는 명령은 다음과 같습니다.

mkdir test
touch test/version.txt
echo "1.0.2" > test/version.txt 
tar zcvf rootfs.tar -C test .
gzip  -f -9 -n -c rootfs.tar > rootfs.tar.gz
tar xf rootfs.tar.gz version.txt

tar: version.txt: Not found in archive
tar: Exiting with failure status due to previous errors

이유를 알려주실 수 있나요? 위의 tar.gz에 version.txt 파일이 있습니다.

답변1

rootfs.targzip으로 압축된 tar 아카이브입니다. rootfs.tar.gzgzip으로 두 번 압축된 tar 아카이브입니다. Tar는 이중 압축으로 인해 혼란스러워서 오류를보고하지 않고 파일을 빈 아카이브로 취급합니다.

두 번 압축하는 것은 의미가 없으므로 이 추가 gzip 단계를 제거하세요. 혼동을 피하기 위해 전달하는 경로가 . 로 시작하므로 압축을 풀 rootfs.tar.gz때 .로 시작하는 경로를 전달해야 합니다. tar는 경로의 작업을 무작동으로 처리하지 않습니다 .rootfs.tartar.././

mkdir test
touch test/version.txt
echo "1.0.2" > test/version.txt 
tar zcvf rootfs.tar.gz -C test .
tar xf rootfs.tar.gz ./version.txt

./파일 이름에 접두사가 붙지 않도록 하려면 --transform아카이브를 생성할 때 이를 사용할 수 있습니다.

tar zcvf rootfs.tar.gz --transform='s!^\./!!' -C test .
tar xf rootfs.tar.gz version.txt

관련 정보