Um script básico apenas verifica o tamanho do arquivo zip e troca os arquivos zip de acordo. Algo parecido com isto:
#!/usr/bin/env bash
## This counter is used to change the zip file name
COUNTER=0;
## The maximum size allowed for the zip file
MAXSIZE=1024;
## The first zip file name
ZIPFILE=myzip"$COUNTER".zip;
## Exit if the zip file exists already
if [ -f $ZIPFILE ]; then
echo $ZIPFILE exists, exiting...
exit;
fi
## This will hold the zip file's size, initialize to 0
SIZE=0;
## Go through each of the arguments given in the command line
for var in "$@"; do
## If the zip file's current size is greater than or
## equal to $MAXSIZE, move to the next zip file
if [[ $SIZE -ge $MAXSIZE ]]; then
let COUNTER++;
ZIPFILE=myzip"$COUNTER".zip;
fi
## Add file to the appropriate zip file
zip -q $ZIPFILE $var;
## update the $SIZE
SIZE='stat -c '%s' $ZIPFILE';
done
CAVEATS:
- O script espera arquivos , não os diretórios, se você quiser que ele seja executado nos diretórios, adicione
-r
ao comandozip
. No entanto, ele não verificará o tamanho do arquivo até que o diretório each seja compactado. - O tamanho do arquivo zip é verificado após cada compactação. Isso significa que você obterá arquivos maiores que seu limite. Isto porque é difícil adivinhar qual será o tamanho comprimido de um ficheiro, por isso não posso verificar antes de o adicionar ao arquivo.