Recebi um arquivo Tar/GZipped que foi criado em um dispositivo Linux integrado.
O arquivo pode ser extraído perfeitamente em um desktop Linux se eu executar algo como tar zxf myFile.tgz
. O arquivo extrai para algo como
dir1/
file1
file2
dir2/
file1
file2
subdir1/
file1
...mas suspeito que o conteúdo e o layout do arquivo específico 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 .tgz
que recebi é ele próprio nomeado myFile.tgz
... mas não tenho certeza se é algo mais do que coincidência.
Naveguei um pouco no SuperUser e encontrei alguns problemas relacionados, um dos quais sugeria que o 7-Zip lida com .tgz
arquivos melhor que o WinZip, mas aparentemente não nessa situação.
Alguém sabe o que dá? Por que um .tgz
seria totalmente extraível no Linux, mas não no Windows? Que soluções alternativas podem haver?
Se eu renomear esse arquivo sem extensão para um .tar
arquivo, esse .tar
arquivo poderá ser extraído com 7-Zip e/ou WinZip.
Ainda gostaria de entender o que está acontecendo e se há uma solução alternativa que não envolva a renomeação manual de arquivos, porque, idealmente, o .tgz
arquivo original entregue pelo dispositivo incorporado deve ser extraível no Linux e no Windows.
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 temporário no caso de 7-zip. este arquivo pode ser "descompactado" com tar ou com 7-zip novamente.
além do fluxo tar 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 do Windows, a descompactação de arquivos Linux pode falhar ou causar problemas devido ao conjunto de caracteres ASCII em nomes de arquivos ( todos os caracteres, exceto
/
permitidos no linux). geralmente não faz sentido extrair o arquivo tar para o disco do windowsPor quê?
Porque a Microsoft ainda não o incorporou.
Os tipos de arquivo são suportados apenas 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 uma longa história 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 pacote no Windows.
Além disso, não podemos responder porque não somos as pessoas que escrevem o Windows.
Um
.tgz
totalmente extraível em um sistema Linux, porquetar
foi construído pela AT&T Bell Laboratories especificamente para sistemas operacionais Unix e semelhantes a Unix. Egzip
é apenas um algoritmo de compressão que foi desenvolvido anos depois detar
ter sido desenvolvido.O mesmo raciocínio vale para todas as outras extensões de arquivo que são suportadas em um sistema operacional, mas não em outro. Por exemplo, você não pode usar um
.dmg
arquivo no Windows e não pode usar um.msi
no macOS.A maioria das pessoas escolhe a
tar.gz
opção no Linux/Unix porquetar
armazena atributos e permissões de arquivo Unix e consolida todos os arquivos a serem arquivados. Em seguida,gzip
é usado para comprimi-lo.A
zip
opção armazena atributos de arquivo do MSDOS, compacta cada arquivo individualmente e consolida cada arquivo individual em um único arquivo.Dependendo da sua situação, em vez de tarar e gzipar o arquivo no dispositivo incorporado, você pode usar o
zip
comando.