Por que o tgz pode ser aberto no Linux, mas não no Windows?

Por que o tgz pode ser aberto no Linux, mas não no Windows?

Recebi um arquivo Tar/GZipped que foi criado em um dispositivo Linux incorporado.

O arquivo pode ser extraído perfeitamente em um desktop Linux se eu executar algo como tar zxf myFile.tgz. O arquivo é extraído para algo como

dir1/
  file1
  file2
dir2/
  file1
  file2
  subdir1/
    file1

... mas suspeito que o conteúdo e o layout específicos do arquivo sejam irrelevantes.

Quando tento extrair esse mesmo arquivo no Windows (usando 7-Zip ou WinZip), recebo:

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

Provavelmente é relevante que esse diretório de nível superior seja nomeado " myFile" quando o .tgzque recebi éem sinomeado myFile.tgz... mas não tenho certeza se é algo mais do que uma coincidência.

Naveguei um pouco pelo SuperUser e encontrei alguns problemas relacionados, um dos quais sugeria que7-Ziplida com .tgzarquivos melhor que o WinZip, mas aparentemente não nesta situação.

Alguém sabe o que dá? Por que seria .tgztotalmente extraível no Linux, mas não no Windows? Que soluções alternativas podem existir?

Se eu renomear esse arquivo sem extensão para um .tararquivo, entãoque .tararquivo pode ser extraído com 7-Zip e/ou WinZip.

Eu ainda gostaria de entender o que está acontecendo e se há uma solução alternativa que não envolva a renomeação manual do arquivo, porque idealmente o .tgzarquivo original entregue pelo dispositivo incorporado deve ser extraível no Linux e no Windows.

Responder1

tgz (tar.gz) é um arquivo de dois níveis. primeiro, um fluxo de arquivos é salvo como tar. segundo, o arquivo tar é compactado com gzip. se você extrair um arquivo gzip, sempre obterá um único arquivo - arquivo sem extensão com nome de aparência temporária no caso de 7-zip. este arquivo pode ser "descompactado" com tar ou com 7-zip novamente.

além do tar stream conter metadados como permissões de arquivo, ID de grupo + ID de usuário, xattrs ou contexto selinux (e talvez links simbólicos) que se perdem no sistema de arquivos Windows, a descompactação de arquivos Linux pode falhar ou causar problemas por causa do conjunto de caracteres ascii nos nomes dos arquivos ( todos os caracteres, exceto /permitidos no Linux). geralmente não faz sentido extrair o arquivo tar para o disco do Windows

Responder2

Por que?

Porque a Microsoft ainda não incorporou isso.

Os tipos de arquivo só são suportados por um sistema operacional quando as instruções necessárias são adicionadas a esse sistema operacional para informar como lidar com os arquivos.

.tag.gz tem um longo histórico de uso em sistemas *nix, mas .zip e outros pacotes são muito mais populares no Windows e, portanto, não houve nenhuma demanda real para oferecer suporte a esses tipos de pacotes no Windows.

Mais do que isso, não podemos responder porque não somos as pessoas que escrevem o Windows.

Responder3

Totalmente .tgzextraível em um sistema Linux, porque tarfoi desenvolvido pela AT&T Bell Laboratories especificamente para sistemas operacionais Unix e semelhantes a Unix. E gzipé apenas um algoritmo de compressão que foi desenvolvido anos depois de tarter sido desenvolvido.

O mesmo raciocínio se aplica a todas as outras extensões de arquivo suportadas em um sistema operacional, mas não em outro. Por exemplo, você não pode usar um .dmgarquivo no Windows e não pode usar um arquivo .msino macOS.

A maioria das pessoas escolhe a tar.gzopção no Linux/Unix porque tararmazena atributos e permissões de arquivos Unix e consolida todos os arquivos a serem arquivados. Em seguida, gzipé usado para compactá-lo.

A zipopção armazena atributos de arquivo MSDOS, compacta cada arquivo individualmente e consolida cada arquivo individual em um único arquivo.

Dependendo da sua situação, em vez de tarar e compactar o arquivo no dispositivo incorporado, você pode usar o zipcomando.

informação relacionada