본문으로 건너뛰기
AZ Tools

TAR 아카이브 검사기

tar 아카이브 안의 512바이트 헤더를 읽어, 풀기 전에 전체 목록을 보여 줍니다. 각 항목의 경로, 파일인지 디렉터리인지 심볼릭 링크인지 하드 링크인지, 유닉스 권한 비트를 rwx와 8진수 두 형태로, 소유자와 그룹을 이름과 숫자로, 크기와 수정 시각을, 링크라면 가리키는 대상까지 표시합니다. 가장 단순한 형식만이 아니라 tar가 실제로 쓰는 형식을 모두 다룹니다. 옛 v7, 155바이트 접두 필드를 가진 POSIX ustar, GNU의 긴 이름 헤더, 그리고 고정 폭 필드를 UTF-8 값으로 덮어쓰는 PAX 확장 헤더까지 지원합니다. 255바이트를 넘는 경로나 소수점 이하 시각이 살아남는 것은 오직 PAX 덕분입니다. 각 블록의 헤더 체크섬을 검증하므로, 손상된 파일이나 tar가 아닌 파일은 그럴듯해 보이는 엉터리 목록을 만들어 내는 대신 거부됩니다. 헤더 중간에서 잘린 아카이브도 조용히 짧게 나열하지 않고 알려 줍니다. 풀기 전에 봐야 하는 이유는 tar 항목이 현재 디렉터리 바깥 경로를 지정할 수 있기 때문입니다. 앞에 슬래시가 붙은 항목, ..이 들어간 경로, 절대 경로를 가리키는 심볼릭 링크는 의도하지 않은 곳에 파일을 떨어뜨릴 수 있습니다. GNU tar는 앞의 두 가지를 제거하고 경고하지만, 다른 언어의 압축 해제 코드는 그렇지 않은 경우가 많습니다. 최상위 항목이 여러 개라서 작업 디렉터리에 내용물을 흩뿌리는 아카이브도 함께 표시합니다. 모든 처리는 브라우저에서 이루어지며 아카이브는 업로드되지 않습니다.

사용법

  1. .tar, .tar.gz, .tgz 파일을 상자에 끌어다 놓거나 눌러서 선택합니다. gzip으로 압축된 아카이브는 브라우저에서 먼저 해제합니다.
  2. 형식 표시줄에서 어떤 계열의 tar가 만들었는지 확인합니다. v7, ustar, gnu, pax 중 무엇이냐에 따라 신뢰할 수 있는 필드가 달라집니다.
  3. 표에서 원하는 항목을 찾습니다. 권한과 소유자는 tar -tv가 출력하는 것과 똑같은 형태로 표시됩니다.
  4. 노란색으로 강조된 항목은 풀기 전에 반드시 확인하십시오. 압축을 푸는 디렉터리 바깥에 쓸 수 있는 항목입니다.
  5. 파일이 거부되었다면 헤더 체크섬이 실패한 것입니다. 아카이브가 손상되었거나 잘렸거나 애초에 tar가 아닙니다.

자주 묻는 질문

압축도 하지 않는 tar에 왜 체크섬이 필요합니까?
512바이트 헤더마다 자기 바이트의 단순 합이 들어 있습니다. 체크섬 필드 자체는 공백으로 간주하고 계산합니다. 강력한 무결성 검사도 아니고 파일 내용이 아니라 헤더만 덮지만, 진짜 헤더와 임의의 데이터를 구분하기에는 충분합니다. 그 덕분에 아카이브를 순회할 수 있습니다. tar에는 중앙 색인이 없어서 다음 항목을 찾는 유일한 방법이 현재 헤더의 크기를 믿고 건너뛰는 것이기 때문입니다. 체크섬이 실패하면 이 도구는 엉뚱한 위치로 건너뛰어 그곳 바이트로 항목을 지어내는 대신 거기서 멈춥니다.
v7, ustar, gnu, pax는 무엇이 다릅니까?
같은 512바이트 헤더의 네 세대입니다. v7은 원본으로 100자짜리 이름 칸 하나뿐이라 소유자 이름도, 긴 경로도 담지 못합니다. ustar(POSIX.1-1988)는 매직 문자열과 사용자·그룹 이름, 155바이트 접두 필드를 추가해서 마침 알맞은 자리에 슬래시가 있으면 경로가 255자까지 늘어납니다. GNU tar는 긴 이름을 다른 방식으로 풀었습니다. 내용이 곧 진짜 이름인 별도 헤더를 하나 더 씁니다. pax(POSIX.1-2001)는 이를 키=값 레코드로 일반화해서 길이 제한 없는 경로, 1초 미만 시각, 큰 uid 등 어떤 필드든 UTF-8로 담을 수 있게 했습니다. 요즘 GNU tar는 값이 들어가지 않으면 기본적으로 pax를 씁니다.
타르밤(tarbomb)이 무엇이고 왜 표시합니까?
항목들이 하나의 최상위 디렉터리 아래에 있지 않은 아카이브입니다. 현재 폴더에서 풀면 지웠다 말 수 있는 폴더 하나가 생기는 대신 낱낱의 파일이 그 폴더에 흩뿌려집니다. 악의라기보다 부주의인 경우가 대부분이지만 뒷정리는 정말 성가십니다. 지금 디렉터리에 있는 파일 중 어느 것이 아카이브에서 나온 것인지 알려면 목록을 다시 봐야 하기 때문입니다. 이 도구는 어차피 목록을 갖고 있으므로 미리 알려 줍니다. 풀 때의 해결책은 tar -xf archive.tar -C 새폴더 로, 아카이브 내용이 무엇이든 그 안에 가둡니다.
tar 파일이 압축을 푸는 폴더 바깥의 파일을 덮어쓸 수 있습니까?
세 가지 방법으로 시도할 수 있고, 이 도구는 셋 다 표시합니다. 이름이 슬래시로 시작하는 항목은 절대 경로입니다. 이름에 ..이 들어간 항목은 압축 해제 디렉터리 밖으로 올라갑니다. 대상이 절대 경로이거나 ..을 포함하는 심볼릭 링크나 하드 링크는, 같은 아카이브의 뒤쪽 항목이 그 링크를 통해 다른 곳에 쓰게 해 줍니다. GNU tar는 기본적으로 이를 막습니다. 앞의 슬래시를 떼고 ..이 든 경로로는 풀기를 거부합니다. 그러나 다른 언어의 아카이브 처리 라이브러리는 그렇지 않은 경우가 잦고, 이것이 길게 이어진 경로 탈출 취약점들의 뿌리였습니다. 목록을 먼저 보는 데는 아무 비용도 들지 않습니다.
아카이브가 어딘가로 전송됩니까?
아닙니다. 파일은 브라우저의 FileReader로 읽고 이 페이지의 자바스크립트에서 해석하며 어디로도 보내지 않습니다. gzip 해제도 로컬에서 일어납니다. 직접 확인할 수 있습니다. 페이지를 연 다음 네트워크를 끊고 파일을 끌어다 놓아 보십시오. 그대로 동작합니다. 파일 이름을 포함해 아카이브에 관한 어떤 것도 기기를 떠나지 않습니다.
파일 내용은 왜 볼 수도 내려받을 수도 없습니까?
이 도구는 목록을 읽지 내용물을 읽지 않습니다. 항목의 내용을 들고 있지 않고 헤더에서 헤더로 건너뛰도록 일부러 만들었습니다. 그래야 수 기가바이트짜리 아카이브도 브라우저 탭에 통째로 올리지 않고 목록을 볼 수 있습니다. 항목 하나의 내용이 필요하다면 tar -xf archive.tar 아카이브내부/경로 로 그 경로만 꺼내고, tar -Oxf archive.tar 경로 로는 파일을 만들지 않고 표준 출력으로 바로 볼 수 있습니다.

관련 도구