GNU/Linux >> Znalost Linux >  >> Linux

Rozdělení souborů protokolu gzip bez uložení nekomprimovaných rozdělení na disk

Skript jako je následující může stačit.

#!/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++;
}

Můžete použít split --filter možnost, jak je vysvětleno v návodu, např.

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

Edit:nevím, když --filter možnost byla zavedena, ale podle komentářů nefunguje v core utils 8.4 .


Linux
  1. Jak mohu tarovat adresář bez zachování adresářové struktury?

  2. Linux mremap bez uvolnění starého mapování?

  3. Jak získat počet fyzických disků v Linuxu?

  1. Alternativa k povelu tee bez STDOUT

  2. Jak zakódovaná jsou data na disku RAID5?

  3. Zpomalte kopírování disku/disku

  1. Jak zjistit, zda je disk SSD nebo HDD v Linuxu

  2. Ukládání a zálohování 10 milionů souborů v systému Linux

  3. Odpojení kořenového souborového systému bez restartování serveru