← 블로그 목록
윈도우작성 · 6분 읽기

tar.gz 압축 풀기 — 윈도우 11 에서 프로그램 없이, 'Invalid empty pathname' 오류까지 (실측)

리눅스 서버에서 받은 백업, 깃허브에서 내려받은 소스가 .tar.gz 로 와서 어떻게 여는지 막힐 때가 있습니다. 윈도우 11 은 탐색기에서 이런 압축을 열 수 있고, 윈도우 10·11 에는 tar 명령도 들어 있습니다. 윈도우 11 PC 에서 같은 폴더를 tar 형식 여섯 가지로 묶어 하나씩 풀어 봤고, 리눅스 GNU tar 처럼 한글 이름을 넣은 tar 를 만들어 윈도우 tar 가 모든 파일을 거부하는 것까지 확인했습니다.

.tar · .tar.gz · .tgz 는 무엇이 다른가

.tar 는 여러 파일과 폴더 구조를 압축 없이 하나로 이어 붙인 묶음입니다. 그 묶음을 gzip 으로 압축하면 .tar.gz(줄여서 .tgz), bzip2·xz·zstd 로 압축하면 .tar.bz2·.tar.xz·.tar.zst 가 됩니다. 한글 이름 파일 4개가 든 시험 폴더(301,816바이트)를 윈도우 tar 로 묶고 결과 파일의 첫 바이트를 읽었습니다.

파일압축첫 바이트크기(바이트)
.tar없음257번째 바이트부터 ustar313,344
.tar.gz / .tgzgzip1F 8B301,012
.tar.bz2bzip242 5A 68 (BZh)302,836
.tar.xzxzFD 37 7A 58 5A 00302,248
.tar.zstzstd28 B5 2F FD300,724

압축 없는 .tar 는 원본보다 오히려 조금 컸습니다 — 묶기만 하니까요. 압축한 것도 크기가 거의 안 줄었는데, 300,000바이트가 무작위 데이터였기 때문입니다. 글·문서가 많은 폴더는 훨씬 많이 줄어듭니다.

방법 1: 탐색기 — 윈도우 11 24H2 이상

프로그램 없이 푸는 두 길 — 클릭은 탐색기, 스크립트·예전 버전은 tar
  1. 1.tar.gz(또는 .tar·.tgz·.tar.xz…) 파일을 오른쪽 클릭합니다.
  2. 2모두 추출… 을 고르고 풀 위치를 정해 추출합니다.

마이크로소프트 지원 문서 '파일 압축 및 압축 해제'는 윈도우 11 버전 24H2 가 ZIP·RAR·7z·TAR 보관 형식을 지원하며, 암호화된 보관 파일에 대한 작업은 지원하지 않는다고 적고 있습니다. 이 PC(윈도우 11 빌드 26300)에서는 위 여섯 가지가 모두 탐색기 압축 폴더로 열렸고, .tar.gz 를 탐색기로 풀자 한글 이름 파일 4개가 그대로 나왔습니다.

💡

다른 압축 프로그램을 깔아 두었다면 더블클릭은 그 프로그램을 열 수 있습니다 — 이 PC 는 .tar·.gz 가 알집에 연결돼 있었습니다. 탐색기로 풀려면 오른쪽 클릭 메뉴를 쓰세요.

방법 2: tar -xf — 윈도우 10·11 어디서나

윈도우에는 윈도우 10 Insider 빌드 17063 부터 tar 가 들어 있습니다(마이크로소프트 명령줄 블로그, 2018년 1월). 이 PC 의 C:\Windows\System32\tar.exe 는 bsdtar 3.8.9 - libarchive 3.8.9 였습니다. 압축 파일이 있는 폴더에서 명령 프롬프트나 PowerShell 을 열고:

text
tar -xf 파일이름.tar.gz

다른 폴더에 풀려면 -C 뒤에 폴더를 적습니다. 그 폴더는 미리 있어야 합니다 — 없는 폴더를 적으면 tar.exe: could not chdir to '…' 로 실패했습니다.

text
tar -xf 파일이름.tar.gz -C D:\풀폴더

풀기 전에 안에 무엇이 들었는지 보려면 -x 대신 -t:

text
tar -tf 파일이름.tar.gz

풀 때는 -z·-j·-J 를 붙이지 않아도 됩니다. 같은 -xf 로 여섯 가지가 모두 풀렸고, 이름만 .tar 로 바꾼 zip 파일까지 풀렸습니다 — 확장자가 아니라 파일 내용으로 형식을 알아봅니다. 같은 tar.exe 는 RAR·7z 도 읽습니다(이 사이트의 별도 가이드).

'Invalid empty pathname' — 리눅스에서 만든 tar

리눅스의 GNU tar 는 기본 형식에서 파일 이름을 UTF-8 바이트 그대로 적습니다. 파이썬 tarfile 로 같은 꼴(GNU 형식, UTF-8 이름, PAX 머리글 없음)의 tar 를 만들어 이 PC 의 윈도우 tar 로 풀자, 모든 항목이 실패하고 파일이 하나도 풀리지 않았습니다(exit 1).

text
> tar -xf linux_gnu.tar -C out
?먮즺/: Invalid empty pathname: Unknown error
?먮즺/readme.txt: Invalid empty pathname: Unknown error
?먮즺/蹂닿퀬??理쒖쥌.txt: Invalid empty pathname: Unknown error
...

'자료', '보고서_최종' 같은 UTF-8 이름을 윈도우의 한글 코드 페이지(949)로 읽어 깨진 모양입니다. 머리글 글자셋을 UTF-8 이라고 알려 주자 4개 모두 원래 이름으로 풀렸습니다.

text
tar --options hdrcharset=UTF-8 -xf linux_gnu.tar -C out
같은 리눅스식 tar — 그냥 -xf 는 0개, hdrcharset=UTF-8 이나 탐색기는 모두
  • libarchive 의 archive_read_set_options(3) 문서는 tar 읽기 옵션 hdrcharset 을 '파일 이름을 바꿀 때 쓸 문자 집합 이름'이라고 설명합니다.
  • 탐색기 모두 추출은 옵션 없이 같은 파일을 이름 그대로 풀었습니다(여기서 2.8초).
  • 그 tar 에 tar -tf 를 치면 exit 0 으로 같은 깨진 이름이 나와, 풀기 전에 미리 알 수 있습니다.
  • 윈도우 tar 로 만든 tar 와 PAX 형식 tar 는 옵션 없이 잘 풀렸습니다. 윈도우 tar 는 한글 이름이 있으면 PAX 머리글을 붙여 저장했습니다(파일이 PaxHea 로 시작).
⚠️

시험한 PC 는 시스템 로캘이 한국어(코드 페이지 949)입니다. 다른 로캘에서는 같은 파일이 다르게 실패하거나 이름만 깨져서 풀릴 수 있습니다(시험 안 함). 이름이 영문·숫자뿐인 압축에는 이 문제가 없습니다.

그 밖에 만난 오류

메시지원인할 일
Error opening archive: Unrecognized archive format.gz 하나뿐인 파일(.tar.gz 아님)탐색기 모두 추출로 풀림
could not chdir to '…'-C 뒤 폴더가 없음폴더를 먼저 만들기
Error opening archive: Failed to open '…'파일 이름이나 위치가 틀림그 폴더로 이동하거나 전체 경로
Invalid empty pathname리눅스 tar 의 UTF-8 이름--options hdrcharset=UTF-8 또는 탐색기
암호를 물음암호화된 압축 — 탐색기 미지원(마이크로소프트)7-Zip 같은 압축 프로그램

Git for Windows 를 설치한 PC 에서 Git Bash 창에 tar 를 치면 윈도우 bsdtar 가 아니라 Git 에 들어 있는 GNU tar 1.35(C:\Program Files\Git\usr\bin\tar.exe)가 실행됩니다. 이것은 리눅스식 tar 를 옵션 없이 풀었습니다.

자주 묻는 질문

Q. tar.gz 를 열려면 반디집·7-Zip 이 꼭 필요한가요?

보통 압축은 아닙니다. 윈도우 11 24H2 이상은 탐색기 모두 추출로, 윈도우 10·11 은 tar -xf 로 풀립니다. 암호 걸린 압축은 탐색기가 지원하지 않아 압축 프로그램이 필요합니다.

Q. .tgz 와 .tar.gz 는 다른가요?

같습니다 — gzip 으로 압축한 tar 의 짧은 확장자입니다. 같은 폴더를 윈도우 tar 로 묶자 두 파일 크기가 301,012바이트로 똑같았습니다.

Q. tar 가 'Invalid empty pathname' 이라고 하면서 아무것도 안 풀려요.

시험에서는 리눅스 방식(PAX 머리글 없이 UTF-8 이름)으로 만든 tar 에서 났습니다. 윈도우 tar 가 이름을 바꾸지 못해 모든 항목을 건너뜁니다. tar --options hdrcharset=UTF-8 -xf 파일.tar 로 풀거나 탐색기 모두 추출을 쓰세요.

Q. 원하는 폴더에 풀려면요?

tar -xf 파일.tar.gz -C D:\풀폴더 — tar 는 폴더를 만들어 주지 않고 'could not chdir' 로 멈추니 D:\풀폴더 를 먼저 만듭니다.

댓글 0

아직 댓글이 없습니다. 첫 댓글을 남겨 주세요.

댓글은 회원만 쓸 수 있습니다.

광고·욕설·비방·개인정보·불법 내용이 담긴 댓글은 숨기거나 지웁니다. 광고·홍보 글이나 혐오·비방 글을 올린 회원은 강제 탈퇴되고 쓴 글이 모두 지워집니다. 댓글은 닉네임과 함께 공개됩니다. 개인정보처리방침

다른 글