Até não muito tempo atrás, eu nem sabia que você poderia compactar pastas específicas, arquivos ou até mesmo unidades inteiras usando a compactação interna do Windows. Uma maneira simples de fazer isso é ir às propriedades e marcar "compactar conteúdo para economizar espaço em disco" e está tudo pronto.
Em primeiro lugar, pensei que era como compactar arquivos do WinZip para reduzir o tamanho ou combinar todos os arquivos em um arquivo compactado. Mas parece que tem um caso de uso diferente desse.
E o mais interessante é que o arquivo está compactado, mas a saída de hash do arquivo permaneceu a mesma (experiência curta usando uma calculadora de hash de terceiros). Como isso pode ser real? Se a entrada mudar, a saída do hash deve mudar (exceto em caso de colisão, que é bastante rara e está fora do tópico). Por exemplo, digamos que eu comprimi um arquivo chamado MYDOCUMENT.pdf , e posso mantê-lo assim, colocando-o em drives USB ou outro PC recém-instalado e apenas usá-lo como um arquivo normal, sem descompactá-lo manualmente e tal ?
Quando verifiquei o tamanho do arquivo nas propriedades, o tamanho não mudou nem um byte, mas apenas o "tamanho no disco" mudou de forma decrescente. Portanto, parece que os dados do arquivo permanecem intactos como estão (o mesmo valor de hash provavelmente prova isso), mas apenas compacta e descompacta ao lê-lo do lado do sistema operacional.
Outra pergunta seria: Há outro algoritmo de compactação usando o prompt de linha de comando, digitando "compact.exe /compactos:always". Qual a diferença entre os dois?
O Windows está me dando dor de cabeça esses dias :/
O que exatamente a compactação NTFS faz com os arquivos?
Por padrão, ele os compacta de forma transparente usando uma variante da compactação Lempel-Ziv:
Fonte: código de controle FSCTL_SET_COMPRESSION
Quando você lê o arquivo (por exemplo, para calcular o hash do arquivo), ele é descompactado de forma transparente em tempo real.
Há outro algoritmo de compactação usando o prompt de linha de comando
compact
exibe ou altera a compactação de arquivos em partições NTFS.always
Comprimirá todos os binários do sistema operacional e definirá o estado do sistema como não compacto.Ele suporta diferentes algoritmos
exe
apenas para arquivos:Fonte: Compacto - Compactar arquivos - Windows CMD - SS64.com
Leitura adicional
A resposta do @DavidPostill está correta e completa, mas deixe-me tentar explicar também:
A compactação NTFS é transparente para qualquer aplicativo que a utilize. Isso significa que para cada:
Desempenho: Em teoria, ler/escrever o arquivo fica um pouco mais lento, devido à compressão/descompressão que está acontecendo. No entanto, isso geralmente é insignificante hoje em dia e também pode ser compensado pela unidade que precisa armazenar menos informações.
Gestão:
compact.exe
também mostra isso e também permite ativar/desativar a compactação de arquivos.compact.exe /CompactOs:always
irá definir o Windows compactar todos os binários do sistema operacional.