Adicionar um arquivo a um arquivo zip reescreverá o arquivo inteiro?

Adicionar um arquivo a um arquivo zip reescreverá o arquivo inteiro?

Se eu tiver um arquivo zip grande e adicionar um arquivo a ele, o Windows criará uma cópia do arquivo e excluirá o original, causando uma "amplificação de gravação" muito grande, ou apenas adicionará ao arquivo?

(Talvez importe se é um SSD ou HDD?)

Responder1

Apesar de Formato de arquivo zip foi definido para permitir acréscimos rápidos sem copiar novamente o arquivo inteiro, não conheço nenhum programa Zip/7Zip que faça isso.

O arquivo Zip contém um diretório interno que permite acesso direto a qualquer item incluído. O diretório é armazenado no final do arquivo e todos os itens, incluindo o diretório, são identificados por um cabeçalho.

Em princípio, anexar um novo item ao arquivo pode ser feito anexando-o ao arquivo e, em seguida, anexando um novo diretório. No entanto, uma falha no computador antes que o novo diretório tenha sido completamente gravado e liberado no disco pode deixar o arquivo com lixo no final.

Embora, em teoria, isso ainda possa ser recuperado examinando-se o final do arquivo em busca do cabeçalho do último diretório gravado, um programa que apenas espera encontrar o diretório no final do arquivo falhará, anunciando um arquivo corrompido.

Testei anexar um arquivo a um arquivo para dois produtos Zip e para 7Zip, consultando o endereço de disco do arquivo antes e depois da operação. Eu usei para isso o fsutil file queryextents comando.

Nenhum dos três produtos tentou otimizar a operação de acréscimo. Todos os três copiaram novamente o arquivo inteiro ao anexar o novo item.

Minha conclusão é que, embora tal produto otimizador possa existir, é melhor testar se o seu é um desses produtos. Sem testes, a suposição padrão deveria ser que o arquivo seria recopiado.

informação relacionada