Tengo un script que comprime archivos de una carpeta. Quiero asegurarme de que el archivo comprimido no tenga más de 10 MB. Si el tamaño es superior a 10 MB, debería crear otro archivo ZIP.
¿Hay algún comando (u otro método) que pueda usarse para esto?
Respuestas:
Puede usar la funcionalidad de " archivo dividido " de " zip " en sí usando la opción " --split-size ".
Desde la página de manual "zip" ("
man zip
"):Entonces, para crear un archivo zip dividido , puede hacer lo siguiente ("
-r
" es el interruptor "recursivo" para incluir subdirectorios del directorio):$ zip -r -s 10m archive.zip directory/
Para descomprimir el archivo , la página de
zip
manual " " explica que debe usar el modificador "-s 0`":Entonces, primero "desdobla" el archivo ZIP con el interruptor "-s 0":
$ zip -s 0 archive.zip --out unsplit.zip
... y luego descomprimes el archivo no dividido:
$ unzip unsplit.zip
fuente
Le dará una cantidad de archivos:
Que luego se puede descomprimir con:
fuente
Así es como lo hice para un archivo de 5GB (dividido en 1GB frente a 10MB como OP pidió) ...
Ejemplo: para dividir un archivo de 5GB en archivos de 1GB para copiar a un USB FAT32 (nombre de archivo "FIVE_GB_FILE.ISO")
Paso 1: comprime el archivo (sin compresión, el mismo directorio que la fuente)
Paso 2 : divide el archivo zip de 5 GB en archivos zip de 1 GB
Voila ... debe tener los siguientes archivos de 1GB (Y el original, Y el zip del paso 1)
fuente