Como compactar uma pasta grande em arquivos pequenos limitados a 20Mb?


10

Estou procurando uma maneira de compactar uma grande pasta em muitos arquivos de 20 Mb. Não quero que o arquivo zip seja dividido em outros menores. Em vez disso, quero agrupar alguns subarquivos / pastas em grupos que são 20Mb quando compactados.

Se você souber como fazê-lo, ajude!

Atualizar

Preciso usar os arquivos compactados menores sozinhos, que podem ser descompactados sozinhos.

Minha intenção é usar o virustotal.com para digitalizar uma grande pasta.


Algum detalhe sobre o sistema operacional que você está usando?
Pitto

@Pitto eu uso o Windows 7
Nam G VU

Respostas:


10

No winzip: adicione os arquivos ao zip iniciando o winzip e adicionando ou arraste e solte no winzip ou clique com o botão direito do mouse nos arquivos e winzip 'add to zip ...'

Depois, no winzip:

Ações - Divida na parte inferior do 'tamanho da peça', escolha 'outro tamanho', coloque 20 e selecione mb

Feito!


4
Ficar do lado livre também 7zip funciona perfeitamente :)
Pitto

3
Isso dividirá o arquivo zip e não podemos usar as partes divididas sozinhas.
amigos estão dizendo sobre nam g vu

Agora, entendo melhor o que você está procurando ... Simplesmente não consigo encontrar nenhum tipo de solução para o seu problema, então :( Que tal usar o maravilhoso e gratuito Malwarebytes Antimalware para digitalizar os arquivos localmente?
Pitto

6

O que você está propondo é essencialmente uma variação do Problema da Mochila , com o toque adicional de que, devido à compactação de arquivos, você não começa a saber quanto da sua "mochila" de 20 MB cada item ocupará.

A solução trivial, é claro, seria simplesmente compactar cada arquivo de forma independente, mas isso não reduz a contagem de arquivos, portanto desconfio que não seria uma solução satisfatória.

Se eu me desse esse problema, acho que começaria compactando cada arquivo individualmente em um local temporário (ou na memória, sem gravá-los no disco), apenas para obter um tamanho compactado aproximado para cada um. Com essas informações, seria possível decidir quais arquivos deveriam ser agrupados por qualquer uma das abordagens padrão do Problema da Mochila e criar os arquivos zip reais.

Supondo que você tenha uma linguagem de script disponível e que saiba usá-la, espero que essa abordagem seja bastante simples de automatizar; fazê-lo manualmente seria muito tedioso se você tivesse mais do que um punhado de arquivos para lidar com ...


1
você não pode fechar com 'sem compressão'? Observando a "atualização" da operação, parece que o formato do arquivo é mais importante que a compactação.
Caro

1
Heh ... Bom ponto. Eu não tinha considerado o uso do zip como um arquivo simples sem compactar.
DaveShoohman

@DaveSherohman Então, como podemos fazer isso?
Nam G VU

5

Deixar o zip fazer a divisão para você será muito mais fácil de automatizar do que tentar descobrir sozinho. Se seu objetivo for 20 MB de arquivos zip, será necessário estimar o tamanho compactado de cada arquivo antes de adicioná-lo ao arquivo morto. Existe uma razão para você não querer apenas deixar o zip fazer a divisão para você? Aqui está como você faria isso com o gnu zip:

zip -s 20m -r myzip.zip mydir

Isso criará 20 MB de arquivos compactados com números de índice incrementais no nome do arquivo.


4
Com base no comentário do OP a outra resposta, parece que ele não deseja que o zip o divida automaticamente porque você recebe um único arquivo que requer que todos os arquivos funcionem corretamente, mas ele deseja que cada peça seja um arquivo utilizável completo, independente dos outros.
perfil completo de Dave Sherohman

4

No Linux, existe um programa chamado zipsplit que faz exatamente isso. Faz parte do pacote zip padrão.

Pode ser executado assim:

zipsplit bigfile.zip -n 20000000

para dividir o bigfile.zip em partes de no máximo 20 MB. E observe que os arquivos individuais não serão divididos. Assim, cada parte pode ser descompactada individualmente. O que também significa que, se houver um único arquivo que não possa caber no tamanho máximo da peça, a divisão não será possível.

Atualização: Parece que também existem binários para Windows em info-zip.org, especificamente em ftp://ftp.info-zip.org/pub/infozip/win32/zip300xn-x64.zip para Windows 64.


3

Não é uma perspectiva fácil, receio.

Recentemente, escrevi um script para reunir arquivos em subdiretórios não maiores que 4,3 GB para facilitar o armazenamento em DVD, mas tudo isso foi descompactado.

Fazendo isso com compactação - agora existe o desafio. Você não pode prever o tamanho dos arquivos após a compactação - tudo o que você pode fazer é continuar adicionando arquivos ao zip em ordem decrescente de tamanho até que exceda 20 MB e, em seguida, remover o último arquivo substituindo-o por um menor até ficar abaixo de 20 MB . Se você esgotar todos os arquivos e ele ainda tiver mais de 20 MB, basta soltar o último arquivo e passar para o próximo zip.

Bastante complicado script e um processo bastante lento e doloroso.


Aqui está o meu pensamento. Por que não simplesmente agrupar arquivos / pastas em um grupo descompactado de <= 20Mb e depois compactá-los? Não precisamos que os arquivos de resultado .zip tenham exatamente 20 Mb cada.
Nam L VU

Possível - não sei como você faria isso nas janelas com scripts - eu usei o Perl no Linux antes.
Majenko 04/04

2

Eu sei que este é um tópico antigo, mas eu fiz isso com o 7-zip .

Você precisa usar a opção "Dividir em volume":

insira a descrição da imagem aqui


Legal. Vou tentar voltar com você mais tarde.
Nam G VU

1
Não funciona para este cenário específico porque os arquivos compactados menores não podem ser descompactados sozinhos; eles devem ser mantidos juntos.
browly 6/09/16

2

Dave parecia fornecer a solução programável mais próxima do que o OP solicitava. Eu descobri que isso também poderia ser feito manualmente , se as seguintes suposições forem tomadas (não se trata de um problema técnico puro - é mais um problema organizacional do que técnico):

  1. Como o OP exige que cada arquivo zip possa extrair todo o seu conteúdo de forma independente , os arquivos que excederem 20 MB após o zipamento devem ser tratados de uma das seguintes maneiras:
    • eles não devem ser considerados e, portanto, devem ser separados;
    • que necessitam de ser dividida em volumes 20MB, como outras respostas sugerido ( winzip , 7-zip ), e os ficheiros resultantes não podem ser utilizados de forma independente (quebrar este 1 r suposição).
  2. Os arquivos compactados não precisam necessariamente ter exatamente 20 MB.
  3. Se for mais importante ter vários arquivos zip com tamanho aproximado de 20 MB, é possível compactar sem compactação.

Ao usar esse método com 7-zip (interface e terminal do Windows), preservei a compactação nos arquivos zip recém-gerados.

Comece compactando todos os arquivos em um único arquivo zip em uma pasta vazia (com o método de compactação desejado), por exemplo ALL.zip, e abra-o:

  1. Encomende a lista de arquivos e pastas clicando na coluna tamanho ou tamanho compactado (compactado);
  2. Comece dos tamanhos menores e selecione os arquivos / pastas que deseja agrupar em um zip;
  3. Pressione o Testbotão para confirmar o tamanho coletivo (isso considera a compactação): Recurso de teste
  4. Pressione o botão Extractou Copyenquanto adiciona ao final do caminho de extração o nome de uma nova pasta (por exemplo plu_8MB:)
  5. Dentro do ALL.zipzip, exclua esses arquivos que você acabou de extrair (evitando re-extrações equivocadas) e navegue até a próxima pasta ou subconjunto de arquivos;
  6. Repita um dos seguintes procedimentos:
    • etapas 1 a 5 se você planeja criar um arquivo zip independente;
    • etapas 1 a 3 e reutilize o mesmo nome de pasta (etapa 4) até que os tamanhos coletivos sejam aproximadamente 20 MB;
  7. Depois de extrair todo o conteúdo ALL.zipem pastas independentes, exclua esse zip e abra o terminal nessa pasta ;
  8. Tipo:

    for /F %i in ('dir /b') do "C:\Program Files\7-zip\7z.exe" a -tzip %i.zip %i
    

    Pressione ENTERe isso gerará um arquivo zip para cada pasta que você acabou de extrair.


Para diferentes parâmetros na recompressão, aqui está a documentação da sintaxe 7zip .
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.