Como compactar arquivos com um limite de tamanho?

5

Eu tenho um script que zipar arquivos de uma pasta. Eu quero ter certeza de que o arquivo compactado não tenha mais que 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?

    
por Vishnu 28.02.2016 / 17:00

2 respostas

5

Você pode usar a funcionalidade " arquivo dividido " de " zip " usando a opção " - tamanho dividido ". / p>

De "zip" manpage (" man zip "):

(...)

One use of split archives is storing a large archive on multiple remov‐
able media. For a split archive with 20 split files the files are typ‐
ically named (replace ARCHIVE with the name of your archive) AR‐
CHIVE.z01, ARCHIVE.z02, ..., ARCHIVE.z19, ARCHIVE.zip. Note that the
last file is the .zip file.

(...)

-s splitsize
--split-size splitsize

Split size is a number optionally followed by a multiplier.
Currently the number must be an integer. The multiplier can
currently be one of k (kilobytes), m (megabytes), g (gigabytes),
or t (terabytes). As 64k is the minimum split size, numbers
without multipliers default to megabytes. For example, to cre‐
ate a split archive called foo with the contents of the bar
directory with splits of 670 MB that might be useful for burning
on CDs, the command:

                zip -s 670m -r foo bar

could be used.

Portanto, para criar um arquivo zip dividido , você pode fazer o seguinte (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 manual " zip " explica que você deve usar a opção "-s 0 '":

(...)

 zip -s 0 split.zip --out unsplit.zip

will convert a split archive to a single-file archive.

(...)

Então, primeiro você "desplanta" o arquivo ZIP usando a opção "-s 0":

$ zip -s 0 archive.zip --out unsplit.zip

... e, em seguida, você descompactar o arquivo não dividido:

$ unzip unsplit.zip

    
por 28.02.2016 / 17:36
4
tar -czvf - /path/to/files | split -b 10M - archive.tar.gz

Você receberá vários arquivos:

archive.tar.gzaa

archive.tar.gzab

...

Qual deles pode ser descompactado com:

cat archive.tar.* | tar -xzvf -
    
por 28.02.2016 / 17:38

Tags