O ISO 9660 é um padrão de sistema de arquivos publicado em 1988 para mídia de disco óptico. Ele foi desenvolvido pela Organização Internacional para Padronização (ISO) e pela Comissão Eletrotécnica Internacional (IEC) para definir um sistema de arquivos padrão para CD-ROMs. O objetivo era garantir a interoperabilidade de discos de dados entre diferentes plataformas e sistemas operacionais.
Um disco ISO 9660 contém dados em uma estrutura de árvore hierárquica de diretórios e arquivos, semelhante a outros sistemas de arquivos. O diretório mais alto é conhecido como diretório raiz. Diretórios e arquivos são referenciados usando um caminho que começa na raiz. Cada diretório, incluindo a raiz, contém um conjunto de entradas de diretório que fornecem metadados sobre os arquivos e subdiretórios dentro dele.
O ISO 9660 define vários aspectos e limitações principais da estrutura do sistema de arquivos:
- Os nomes de arquivo podem ter até 8 caracteres com uma extensão de 3 caracteres, separados por um ponto. Os nomes de arquivo devem consistir em letras maiúsculas de A a Z, dígitos de 0 a 9 e sublinhado. O comprimento do nome do arquivo e as restrições de caracteres ajudam a garantir ampla compatibilidade.
- Os nomes de diretório são restringidos de forma semelhante a 8 caracteres maiúsculos mais o sublinhado. Os nomes de diretório também são limitados a 8 níveis de profundidade.
- O comprimento total do caminho para qualquer arquivo ou diretório é limitado a 255 caracteres. Os separadores de caminho usam a barra (/).
Um disco ISO 9660 começa com 16 setores de área do sistema, seguidos por até 2048 setores de descritores de volume. Os descritores de volume fornecem informações sobre a estrutura e o conteúdo do disco, incluindo o descritor de volume primário que contém metadados importantes.
- O descritor de volume primário aparece no setor 16 e contém informações como o nome do volume do disco, identificador do editor, preparador de dados, direitos autorais, resumo e datas de criação/modificação/expiração do volume. Ele também especifica o tamanho e o local da tabela de caminhos, o local do diretório raiz e a referência aos descritores de volume suplementares.
Os discos ISO 9660 usam tabelas de caminhos para otimizar a navegação e as pesquisas de diretório. As tabelas de caminhos fornecem um índice da hierarquia de diretórios, com tabelas separadas para diretórios usando nomes em minúsculas (tabela de caminhos tipo L) e diretórios usando nomes em maiúsculas e caracteres especiais (tabela de caminhos tipo M). A tabela de caminhos tipo L é opcional, mas usada na maioria dos discos.
- Cada entrada da tabela de caminhos contém o local do registro do diretório, o número de níveis de diretório da raiz e o nome do diretório. Isso permite uma passagem eficiente da árvore de diretórios sem a necessidade de analisar os diretórios setor por setor.
Arquivos e diretórios em um disco ISO 9660 são referenciados por meio de entradas de registro de diretório dentro de cada diretório. Um registro de diretório inclui campos de metadados para:
- Comprimento do registro do diretório - Comprimento do registro de atributo estendido - Localização da extensão do arquivo/diretório (deslocamento do setor) - Comprimento dos dados do arquivo/diretório - Data e hora da gravação - Sinalizadores de arquivo (por exemplo: oculto, diretório, arquivo associado) - Tamanho da unidade de arquivo para arquivos intercalados - Tamanho do intervalo de intercalação para arquivos intercalados - Número de sequência do volume - Comprimento do identificador do arquivo (nome do arquivo) - Nome do arquivo
O ISO 9660 define um sistema de arquivos virtual onde todos os dados são masterizados em uma mídia somente leitura. Como tal, o padrão não inclui disposições para modificar um disco ISO 9660 existente - o disco é sempre tratado como somente leitura. Se forem necessárias alterações, uma nova imagem de disco deve ser gerada com os arquivos e diretórios atualizados.
Embora o ISO 9660 tenha sido projetado para mídia óptica, as imagens de disco usando o padrão também podem ser acessadas de outras mídias, como discos rígidos. Muitos sistemas operacionais permitem montar um arquivo de imagem de disco ISO 9660 como uma unidade virtual somente leitura ou acessar o conteúdo da imagem de disco por meio de drivers especiais do sistema de arquivos.
Extensões posteriores ao ISO 9660 expandiram seus recursos, mantendo a compatibilidade com versões anteriores:
- Extensões Rock Ridge: permitem que a semântica e as informações do sistema de arquivos Unix sejam armazenadas em discos ISO 9660. Permite nomes de arquivo mais longos, estruturas de diretório mais profundas e atributos de arquivo adicionais.
- Extensões Joliet: especificadas pela Microsoft para permitir nomes de arquivo Unicode com até 64 caracteres. Os nomes de arquivo Joliet podem usar uma gama mais ampla de caracteres e são armazenados no formato UTF-16.
- El Torito: permite que um disco seja inicializável fornecendo uma especificação para CD-ROMs inicializáveis, que podem incluir código de inicialização e imagens de disco inicializáveis.
Embora os discos ópticos tenham diminuído em popularidade em comparação com seu pico, o ISO 9660 continua sendo um padrão significativo para intercâmbio de dados em mídia somente leitura. Seu design promoveu a interoperabilidade entre plataformas de computação enquanto trabalhava dentro das restrições do armazenamento óptico. Entender o formato ISO 9660 é valioso para aqueles que trabalham com arquivos CD/DVD, imagens de disco e internos do sistema operacional.
A compactação de arquivos reduz redundâncias para que as mesmas informações ocupem menos bits. O limite superior é definido pela teoria da informação: em compactação sem perdas, a fronteira é a entropia da fonte (veja o teorema de codificação de fonte de Shannon teorema de codificação de fonte e seu artigo original de 1948 “A Mathematical Theory of Communication”). Para compactação com perdas, o trade-off entre taxa e qualidade é capturado pela teoria taxa-distorção.
A maioria dos compressores tem duas etapas. Primeiro, um modelo prevê ou expõe estrutura nos dados. Depois, um codificador transforma essas previsões em padrões de bits quase ótimos. Uma família clássica é Lempel–Ziv LZ77 (1977) e LZ78 (1978) detectam substrings repetidas e emitem referências em vez de bytes brutos. Do lado da codificação Huffman (veja o artigo de 1952) dá códigos menores a símbolos mais prováveis. Codificação aritmética e codificação por intervalos chegam ainda mais perto do limite de entropia, enquanto Asymmetric Numeral Systems (ANS) modernos atingem taxas similares com implementações rápidas baseadas em tabelas.
DEFLATE (usado por gzip, zlib e ZIP) combina LZ77 com Huffman. As especificações são públicas: DEFLATE RFC 1951, wrapper zlib RFC 1950e formato gzip RFC 1952. O gzip é moldado para streaming e não tenta fornecer acesso aleatório. PNG padroniza DEFLATE como único método de compressão (janela máxima de 32 KiB) segundo “Compression method 0… deflate/inflate… at most 32768 bytes” e o W3C/ISO PNG 2nd Edition.
Zstandard (zstd): um compressor moderno de uso geral pensado para altas taxas e decompactação muito rápida. O formato está em RFC 8878 (e no espelho HTML) além da especificação de referência no GitHub. Assim como gzip, o frame básico não mira acesso aleatório. Um superpoder do zstd são dicionários: pequenas amostras do seu corpus que reduzem drasticamente muitos arquivos pequenos ou parecidos (consulte a documentação de dicionários do python-zstandard e o exemplo de Nigel Tao). Implementações aceitam dicionários “unstructured” e “structured” (discussão).
Brotli: otimizado para conteúdo web (ex.: fontes WOFF2, HTTP). Mistura um dicionário estático com um núcleo LZ+entropia parecido com DEFLATE. Sua especificação é RFC 7932, que também descreve uma janela 2WBITS−16 com WBITS em [10, 24] (1 KiB−16 B até 16 MiB−16 B) e diz que não fornece acesso aleatório. Brotli costuma superar gzip em texto web e ainda decodifica rápido.
Contêiner ZIP: ZIP é um arquivo que pode armazenar entradas com diversos métodos (deflate, store, zstd etc.). O padrão de fato é o APPNOTE da PKWARE (veja o portal APPNOTE, uma cópia hospedadae os resumos da LC ZIP File Format (PKWARE) / ZIP 6.3.3).
LZ4 mira velocidade bruta com razões modestas. Consulte a página do projeto (“extremely fast compression”) e o formato de frame. Ideal para caches em memória, telemetria ou pipelines quentes que exigem decompactação quase na velocidade da RAM.
XZ / LZMA busca densidade (ótimas taxas) com compressão relativamente lenta. XZ é um contêiner; quem faz o serviço pesado é normalmente LZMA/LZMA2 (modelagem tipo LZ77 + range coding). Veja o formato .xz, a especificação LZMA (Pavlov)e notas do kernel Linux sobre XZ Embedded. XZ costuma comprimir melhor que gzip e rivaliza com codecs modernos de alta taxa, porém com tempos de codificação mais longos.
bzip2 usa Transformada de Burrows–Wheeler (BWT), move-to-front, RLE e Huffman. Geralmente gera arquivos menores que gzip, porém mais devagar; veja o manual oficial e as páginas man (Linux).
O “tamanho da janela” importa. Referências DEFLATE olham no máximo 32 KiB para trás (RFC 1951) e o limite de 32 KiB do PNG documentado aqui. Brotli cobre janelas de ~1 KiB a 16 MiB (RFC 7932). Zstd ajusta janela e profundidade de busca pelos níveis (RFC 8878). Streams básicos de gzip/zstd/brotli foram feitos para decodificação sequencial; os formatos não prometem acesso aleatório, embora contêineres (tar com índice, framing em blocos ou índices específicos) possam adicioná-lo.
Os formatos acima são sem perdas: recuperam exatamente os mesmos bytes. Codecs de mídia costumam ser com perdas: descartam detalhes imperceptíveis para atingir taxas mais baixas. Em imagens, o JPEG clássico (DCT, quantização, codificação entropia) é padronizado em ITU-T T.81 / ISO/IEC 10918-1. Em áudio, MP3 (MPEG-1 Layer III) e AAC (MPEG-2/4) usam modelos perceptuais e transformadas MDCT (veja ISO/IEC 11172-3, ISO/IEC 13818-7e a visão geral de MDCT aqui). As abordagens com e sem perdas podem coexistir (ex.: PNG para ativos de UI; codecs web para imagem/vídeo/áudio).
Teoria Shannon 1948 · Rate–distortion · Codificação Huffman 1952 · Codificação aritmética · Range coding · ANS. Formatos DEFLATE · zlib · gzip · Zstandard · Brotli · LZ4 frame · Formato XZ. Pilha BWT Burrows–Wheeler (1994) · manual do bzip2. Mídia JPEG T.81 · MP3 ISO/IEC 11172-3 · AAC ISO/IEC 13818-7 · MDCT.
Em resumo: escolha um compressor que combine com seus dados e restrições, meça em entradas reais e não esqueça os ganhos de dicionários e framing inteligente. Com o par certo você obtém arquivos menores, transferências mais rápidas e apps mais responsivos sem sacrificar correção ou portabilidade.
A compressão de arquivos é um processo que reduz o tamanho de um arquivo ou arquivos, normalmente para economizar espaço de armazenamento ou acelerar a transmissão em uma rede.
A compressão de arquivos funciona identificando e removendo redundâncias nos dados. Ela usa algoritmos para codificar os dados originais em um espaço menor.
Os dois principais tipos de compressão de arquivos são a compressão sem perdas e a compressão com perdas. A compressão sem perdas permite que o arquivo original seja perfeitamente restaurado, enquanto a compressão com perdas permite uma redução de tamanho mais significativa com alguma perda de qualidade dos dados.
Um exemplo popular de uma ferramenta de compressão de arquivos é o WinZip, que suporta vários formatos de compressão, incluindo ZIP e RAR.
Com compressão sem perdas, a qualidade permanece inalterada. No entanto, com compressão com perdas, pode haver uma diminuição perceptível na qualidade, pois elimina dados menos importantes para reduzir significativamente o tamanho do arquivo.
Sim, a compressão de arquivos é segura em termos de integridade dos dados, especialmente com compressão sem perdas. No entanto, como qualquer arquivo, os arquivos comprimidos podem ser alvo de malware ou vírus, por isso, é sempre importante ter um software de segurança de boa reputação.
Quase todos os tipos de arquivos podem ser comprimidos, incluindo arquivos de texto, imagens, áudio, vídeo e arquivos de software. No entanto, o nível de compressão alcançável pode variar significativamente entre os tipos de arquivo.
Um arquivo ZIP é um tipo de formato de arquivo que usa compressão sem perdas para reduzir o tamanho de um ou mais arquivos. Vários arquivos em um arquivo ZIP são efetivamente agrupados em um único arquivo, o que também facilita o compartilhamento.
Tecnicamente, sim, embora a redução de tamanho adicional possa ser mínima ou até contraproducente. Comprimir um arquivo já comprimido pode às vezes aumentar seu tamanho devido aos metadados adicionados pelo algoritmo de compressão.
Para descomprimir um arquivo, geralmente você precisa de uma ferramenta de descompressão ou descompactação, como WinZip ou 7-Zip. Essas ferramentas podem extrair os arquivos originais do formato comprimido.