Como fazer "Arquivos para armazenar sem compactação" no 7-zip?

25

Existe alguma maneira de impedir seletivamente certos tipos de arquivos de compactação no 7-zip, como no WinRAR?

Estou tentando compactar uma pasta enorme (muitos gigabytes) e não quero que os arquivos já compactados (por exemplo, arquivos ZIP) sejam compactados novamente - eles devem ser armazenados sem compactação.

Mehrdad
fonte
Existe uma razão específica (economizando todo o tempo possível de processamento, lendo-os sem ter que agrupar o binário 7z ou reimplementar o LZMA, etc.) que você deseja fazer isso? De um modo geral, a maioria das ferramentas de compactação que encontrei tendem a ser inteligentes o suficiente para armazenar automaticamente coisas descompactadas se descobrirem que um arquivo responde mal a uma tentativa de compactá-lo ainda mais.
Ssokolow 19/09/11
@ssokolow: Faz quatro anos e acho que nunca respondi à sua pergunta, mas pode haver outros motivos, como minimizar os danos causados ​​pela corrupção e facilitar a recuperação de dados em um desastre.
Mehrdad
Pergunta conectada: unix.stackexchange.com/questions/241898/…
bohdan_trotsenko

Respostas:

19

Sim, é possível ter diferentes métodos de compactação para arquivos diferentes no mesmo arquivo 7-Zip.

Use a versão da linha de comandos do 7-Zip com o -mparâmetro para especificar o método como Copy, o que significa sem compactação.

Exemplo:

7za a -m0=Copy tmp7.7z *.txt

Para obter mais informações, consulte a opção -m (Definir método de compressão) .

harrymc
fonte
O comando acima não comprime os arquivos txt e adiciona apenas os arquivos txt a um arquivo existente. Antes de executar o comando acima, um arquivo morto deve ser criado com os arquivos não txt. Não é tão fácil se houver n tipos diferentes de arquivos.
Praveen Sripati
Se -m0=Copynão funcionar, tente -mx=0.
Bora M. Alper 15/07
15

Vamos supor que você tenha arquivos zip e arquivos txt descompactados em sua pasta.

O primeiro passo é criar um arquivo compactando arquivos txt usando o seguinte comando.

você pode usar -m para definir níveis de compactação, isso também depende do método de compactação que você está usando

Vamos supor que aqui seja apenas a compactação padrão

7z a compressed.7z *.txt -r 

Você será compactado. 7z agora.

O segundo passo será copiar o arquivo já compactado para este arquivo ou criar um novo arquivo.

7z u compressed.7z -u!update.7z -mx0 *.zip 

Há mais elaboração do comando de atualização aqui

E caso você tenha liberdade para usar a interface gráfica, a atualização pode ser feita da seguinte maneira

insira a descrição da imagem aqui

Manish Singh
fonte
Um tipo de aborrecimento, mas acho que funcionaria, obrigado.
Mehrdad 24/09
1

Criei um script do PowerShell que comprimirá rapidamente um diretório armazenando tipos de arquivos que já estão compactados (como arquivos .zip) sem tentar compactá-los novamente. Ele usa a interface de linha de comando do 7zip e usa extensões de nome de arquivo para decidir se deseja compactar ou simplesmente armazenar qualquer arquivo.

Você pode encontrar o script aqui: https://gist.github.com/ivanatpr/5dea086172eab573ba71

ivanatpr
fonte
0

Tecnicamente, os arquivos compactados não compactam ainda mais, algo sobre um limite de entropia ou algo assim, esqueço os detalhes, mas o máximo que você consegue obter é menos de 2% que eu já vi.

A maioria dos bons compressores verifica a compactação e simplesmente armazena arquivos não compactáveis, pois a compactação aumentaria a sobrecarga e aumentaria o tamanho.

Obviamente, há o trabalho e o tempo de analisar o arquivo em primeiro lugar.

Conforme discutido em outras respostas, a execução de várias passagens no conjunto de arquivos provavelmente será a melhor solução e poderá ser facilmente executável por script.

Crie o arquivo 7z e adicione tudo, exceto os arquivos compactados de uma só vez, depois acrescente os arquivos pré-compactados como dados não compactados. (Eu faria dessa maneira, pois o material compactável estaria no início do arquivo e o não compactável, tudo no final. Seria o fluxo da unidade mais rápido, pois é contíguo)

(usado 'comprimir ...' demais!)

lornix
fonte
1
Caso isso ajude alguém, aqui está a essência de "algo sobre um limite de entropia". A entropia pode ser pensada como uma medida de imprevisibilidade. A idéia por trás da compactação é que, se você pode prever um padrão de bits, não precisa armazenar tudo ... apenas instruções mais compactas sobre como prever (uma palavra de código). A entropia máxima teórica é alcançada quando é igualmente provável que a próxima palavra de código possa ser qualquer coisa. Espremer mais compactação dos dados compactados acontece quando a segunda passagem identifica sobras de previsibilidade na saída da primeira.
Ssokolow