Linux 상자에서는 tgz를 열 수 있지만 Windows에서는 열 수 없는 이유는 무엇입니까?

Linux 상자에서는 tgz를 열 수 있지만 Windows에서는 열 수 없는 이유는 무엇입니까?

임베디드 Linux 장치에서 생성된 Tar/GZipped 파일을 받았습니다.

. tar zxf myFile.tgz​파일은 다음과 같이 추출됩니다.

dir1/
  file1
  file2
dir2/
  file1
  file2
  subdir1/
    file1

...하지만 특정 파일 내용과 레이아웃은 관련이 없는 것 같습니다.

Windows에서(7-Zip 또는 WinZip을 사용하여) 동일한 파일을 추출하려고 하면 다음과 같은 결과가 나타납니다.

  myFile/
    <extensionless file with temp-looking name e.g. "logs_xqUt09">

내가 받은 디렉토리가 다음과 같을 때 최상위 디렉토리의 이름이 " myFile" 로 지정되는 것은 아마도 관련이 있을 것입니다..tgz그 자체... 라는 이름이 붙었 myFile.tgz지만 그것이 우연 이상의 것인지는 확실하지 않습니다.

SuperUser를 조금 탐색한 결과 몇 가지 관련 문제를 발견했습니다. 그 중 하나는 다음과 같습니다.7-ZipWinZip보다 파일을 더 잘 처리 .tgz하지만 이 상황에서는 그렇지 않은 것 같습니다.

무엇을 주는지 아는 사람 있나요? .tgzLinux에서는 완전히 추출 할 수 있지만 Windows에서는 추출할 수 없는 이유는 무엇입니까 ? 어떤 해결 방법이 있을 수 있나요?

.tar확장자가 없는 파일의 이름을 파일 로 바꾸면저것 .tar파일은 7-Zip 및/또는 WinZip으로 추출할 수 있습니다.

무슨 일이 일어나고 있는지, 그리고 수동으로 파일 이름을 바꾸지 않는 해결 방법이 있는지 알고 싶습니다. 이상적으로는 .tgz임베디드 장치에서 제공하는 원본 파일을 Linux 및 Windows에서 추출할 수 있어야 하기 때문입니다.

답변1

tgz(tar.gz)는 2레벨 아카이브입니다. 먼저 파일 스트림이 tar로 저장됩니다. 두 번째로 tar 파일은 gzip으로 압축됩니다. gzip 파일을 추출하면 항상 단일 파일(7-zip의 경우 임시 이름으로 보이는 확장명 없는 파일)을 얻게 됩니다. 이 파일은 tar 또는 7-zip을 다시 사용하여 "압축해제"할 수 있습니다.

tar 스트림에는 Windows 파일 시스템에서 손실되는 파일 권한, 그룹 ID + 사용자 ID, xattrs 또는 selinux 컨텍스트(및 기호 링크)와 같은 메타데이터가 포함되어 있는 것 외에도 파일 이름의 ASCII 문자 집합으로 인해 Linux 파일 압축 풀기가 실패하거나 문제를 일으킬 수 있습니다( Linux에서 허용되는 문자를 제외한 모든 문자 /). 일반적으로 tar 아카이브를 Windows 디스크로 추출하는 것은 의미가 없습니다.

답변2

왜?

왜냐하면 Microsoft는 아직 이를 구축하지 않았거나 구축하지 않았기 때문입니다.

파일 형식은 파일 처리 방법을 알려주는 필수 지침이 해당 OS에 추가된 경우에만 OS에서 지원됩니다.

.tag.gz는 *nix 시스템에서 오랫동안 사용되어 왔지만 .zip 및 기타 패키지는 Windows에서 훨씬 더 널리 사용되므로 Windows에서 해당 패키지 유형을 지원하려는 실제 수요는 없었습니다.

그 이상은 우리가 Windows를 작성하는 사람이 아니기 때문에 답변할 수 없습니다.

답변3

AT&T Bell Laboratories에서 Unix 및 Unix 계열 운영 체제용으로 특별히 제작했기 .tgz때문에 Linux 시스템에서 완전히 추출 가능합니다 . tar그리고 개발된 지 gzip몇 년 후에 개발된 압축 알고리즘일 뿐입니다 .tar

한 OS에서는 지원되지만 다른 OS에서는 지원되지 않는 다른 모든 파일 확장자에도 동일한 근거가 적용됩니다. 예를 들어 Windows에서는 파일을 사용할 수 없고 macOS에서는 .dmg파일을 사용할 수 없습니다 .msi.

대부분의 사람들은 Unix 파일 속성과 권한을 저장하고 보관할 모든 파일을 통합하기 tar.gz때문에 Linux/Unix 옵션을 선택합니다. tar그런 다음 gzip압축하는 데 사용됩니다.

zip옵션은 MSDOS 파일 특성을 저장한 다음 각 파일을 개별적으로 압축한 다음 각 개별 파일을 하나의 파일로 통합합니다.

상황에 따라 내장 장치에서 파일을 taring하고 gzip하는 대신 명령을 사용할 수 있습니다 zip.

관련 정보