GNU/Linux >> Tutoriales Linux >  >> Linux

Dividir archivos de registro comprimidos con gzip sin almacenar las divisiones descomprimidas en el disco

Una secuencia de comandos como la siguiente podría ser suficiente.

#!/usr/bin/perl
use PerlIO::gzip;

$filename = 'out';
$limit = 500000;

$fileno = 1;
$line = 0;

while (<>) {
    if (!$fh || $line >= $limit) { 
        open $fh, '>:gzip', "$filename_$fileno"; 
        $fileno++;
        $line = 0; 
    }
    print $fh $_; $line++;
}

Puedes usar el split --filter opción como se explica en el manual, por ejemplo,

zcat biglogfile.gz | split -l500000 --filter='gzip > $FILE.gz'

Editar:no se da cuenta cuando --filter se introdujo la opción pero según los comentarios, no funciona en core utils 8.4 .


Linux
  1. Cómo usar dd en Linux sin destruir tu disco

  2. Cómo encontrar si el disco es SSD o HDD en Linux

  3. ¿Cómo tardo un directorio sin conservar la estructura del directorio?

  4. ¿Cómo obtener la cantidad de discos físicos en Linux?

  5. ¿Qué tan codificados están los datos en un disco RAID5?

Los 15 mejores programas de clonación de discos para escritorio Linux

¿Linux mremap sin liberar el mapeo anterior?

Alternativa al comando tee sin STDOUT

Poner a cero el contenido de un disco duro sin destruir el sistema de archivos

Hacer que la copia de disco/disco sea más lenta

¿Poner un proceso en segundo plano sin detenerlo - (ctrl+z)?