GNU/Linux >> Tutoriels Linux >  >> Linux

Fractionner les fichiers journaux gzippés sans stocker les fractionnements non compressés sur le disque

Un script comme celui-ci peut suffire.

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

Vous pouvez utiliser le split --filter option comme expliqué dans le manuel, par exemple

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

Edit :pas au courant quand --filter l'option a été introduite mais selon les commentaires, elle ne fonctionne pas dans core utils 8.4 .


Linux
  1. Les mérites d'un système de fichiers sans partition ?

  2. Comment répertorier le nième fichier le plus jeune (sans analyser Ls !) ?

  3. Archiver l'historique sans quitter le shell ?

  4. Linux - Rend la copie de disque/disque plus lente ?

  5. Manière scriptable d'identifier la nième partition d'un disque ?

Comment savoir si le disque est un SSD ou un disque dur sous Linux

Les 15 meilleurs logiciels de clonage de disque pour Linux Desktop

Comment tarer un répertoire sans conserver la structure du répertoire ?

Alternative à la commande tee sans STDOUT

Stockage et sauvegarde de 10 millions de fichiers sous Linux

Démonter le système de fichiers racine sans redémarrer le serveur