Eu tenho um script que zip arquivos de uma pasta. Quero garantir que o arquivo compactado não tenha mais de 10 MB. Se o tamanho for maior que 10 MB, ele deverá criar outro arquivo ZIP.
Existe algum comando (ou outro método) que possa ser usado para isso?
Respostas:
Você pode usar a funcionalidade " arquivo morto dividido " do próprio " zip " usando a opção " --split-size ".
Na página de manual "zip" ("
man zip
"):Portanto, para criar um arquivo zip dividido , você pode fazer o seguinte (a opção "
-r
" é a opção "recursiva" para incluir subdiretórios do diretório):$ zip -r -s 10m archive.zip directory/
Para descompactar o arquivo , a página de
zip
manual " " explica que você deve usar a opção "-s 0`":Portanto, você primeiro "desagrega" o arquivo ZIP usando a opção "-s 0":
$ zip -s 0 archive.zip --out unsplit.zip
... e depois descompacte o arquivo não dividido:
$ unzip unsplit.zip
fonte
Fornecerá vários arquivos:
Que pode ser descompactado com:
fonte
Aqui está como eu fiz isso para um arquivo de 5 GB (dividido em 1 GB vs 10 MB, conforme solicitado pelo OP) ...
Exemplo: Para dividir um arquivo de 5 GB em arquivos de 1 GB para copiar para um USB FAT32 (nome do arquivo "FIVE_GB_FILE.ISO")
Etapa 1: compactar o arquivo (sem compactação, mesmo diretório que a origem)
Etapa 2 : dividir o arquivo zip de 5 GB em arquivos zip de 1 GB
Voila ... você deve ter os seguintes arquivos de 1 GB (E o original E o zip da etapa 1)
fonte