아카이브 폭탄을 방지하기 위해 현재 디렉토리를 오염시키지 않고 안전하게 압축을 푸는 방법은 무엇입니까?

아카이브 폭탄을 방지하기 위해 현재 디렉토리를 오염시키지 않고 안전하게 압축을 푸는 방법은 무엇입니까?

존경받는 프로젝트는 , 등 을 포함하는 폴더 zyrgus-3.18.tar.gz와 같은 단일 디렉터리를 포함하는 tar 아카이브를 게시합니다.zyrgus-3.18srcbuilddist

하지만 일부 펑크 프로젝트는 모든 것을 뿌리에 둡니다 :'-(엉망아카이브를 취소하는 경우. 매번 수동으로 폴더를 만드는 것은 고통스럽고 대부분의 경우 불필요합니다.

  • .tar 또는 .tar.gz 파일의 루트에 여러 디렉터리가 포함되어 있는지 확인하는 매우 빠른 방법이 있습니까? 대규모 아카이브의 경우에도 마찬가지입니다.
  • 아니면 이 경우 디렉토리(확장자 없는 아카이브 이름)를 생성하고 그 안에 모든 콘텐츠를 넣을 수 있는 도구가 있습니까?

답변1

순찰대원다양한 유형의 아카이브를 처리하고 아카이브에 여러 파일이 포함된 경우 하위 디렉터리를 생성하여 추출된 파일이 작업 디렉터리를 복잡하게 만드는 것을 방지합니다.

아카이브 추출

patool extract archive.tar

지원되는 형식 목록을 얻으려면 patool formats.

답변2

당신은 다음과 같은 것을 할 수 있습니다

tar tf thefile.tar | cut -d/ -f1 | sort -u

tar에 어떤 최상위 항목이 있는지 확인하여 wc -l둘 이상이 있는지 확인하세요. 예를 들어 tar에 somedir/whateverAND ALSO (또는 더 이상한 것) 형식의 파일 경로가 포함되어 있는 경우 이는 실패할 수 있습니다. ./somedir/whatever그러나 이는 흔하지 않습니다.

이는 출력하기 전에 전체 tar 파일을 읽지 sort만 순차 읽기이므로 큰 파일을 건너뛸 수 있으므로 실제 추출보다 빠릅니다.

이 작업을 대화형으로 수행하고 파일이 클 수 있는 경우 둘 이상의 항목을 인쇄하는 경우 및 + sort -u로 변경할 수 있습니다.uniqControlC

답변3

넌 할 수있어:

pax <some.tar

... tar파일 내용을 나열합니다.

얼마나 깊은지 알고 싶다면 다음과 같이 할 수 있습니다.

pax <some.tar | tr -dc /\\n | sort -r | head -n1

다음을 사용하여 추출 시 폭발을 명시적으로 비활성화할 수 있습니다.

mkdir some.tar
pax -'rs|^|some.tar/|' <some.tar

답변4

aunpack archive.tar내가 사용하는 것입니다.

좋았던 시절의 일부도구팩. 맨페이지:https://linux.die.net/man/1/atool

관련 정보