Accéder au contenu.
Menu Sympa

fr - Re: migration d'archives sympa vers archiveur 'Mhonarc'

Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa

Archives de la liste

Chronologique Discussions  
  • From: Olivier Salaun - CRU <adresse@cachée>
  • To: adresse@cachée
  • Subject: Re: migration d'archives sympa vers archiveur 'Mhonarc'
  • Date: Mon, 11 Oct 1999 14:22:33 +0200

Jose Pires :
> Existe t-il une moulinette qui prenne les fichiers archives de sympa
> pour les transformer au format "Archiveur" (MhonArc) afin de reprendre
> l'historique des message dans l'archive web.

Les archives de Sympa sont au format digest.
Tu peux utiliser l'utilitaire «burst» pour obtenir des messages individuels.
Pour le trie des messages par mois, voici un petit script maison (asis) qui
analyse la date des messages et range le message dans l'archive.

Olivier
#! /usr/bin/perl

%lesmois = qw(jan 1
fev 2
mar 3
avr 4
mai 5
jun 6
jul 7
aug 8
sep 9
oct 10
nov 11
dec 12);
$lesmois{feb} = $lesmois{fv} = 2;
$lesmois{apr} = 4;
$lesmois{may} = 5;
$lesmois{aou} = 2;
$lesmois{dc} = 12;

die "Usage : $ARGV[-1] <nom de liste>" unless ($#ARGV >= 0);

$liste = $ARGV[0];
$dom = 'cru.fr';

$rep_dest = "/home/httpd/html/arc/$liste\@$dom";
$rep_src = "/tmp/$liste";

die "Pas de répertoire source : $rep_src" unless (-d $rep_src);

if (-d $rep_dest) {
print "Cette liste est déja archivé : $rep_dest\nContinuer (<CR>|n) ?";
$rep = <STDIN>;
die if ($rep eq 'n');
}else {
mkdir $rep_dest, 0755 or die;
}

foreach $m (<$rep_src/[0-9]*>) {
print "$m\n";
open MSG,"$m";
$incorrect = 0;
while (<MSG>) {
if (/^Date:\s+(.*)$/) {
$date = $1;
# Date du type : Mon, 8 Dec 97 13:33:47 +0100
if ($date =~ /^\w{2,3},\s+\d{1,2}\s+([\wéû]{2,3})\s+(\d{2,4})/) {
$mois = $1;
$annee =$2;
# Date du type : 8 Dec 97 13:33:47+0100
}elsif ($date =~ /^\d{1,2}\s+(\w{3}) (\d{2,4})/) {
$mois = $1;
$annee =$2;
# Date du type : 8-DEC-1997 13:33:47 +0100
}elsif ($date =~ /^\d{1,2}-(\w{3})-(\d{4})/) {
$mois = $1;
$annee =$2;
# Date du type : Mon Dec 8 13:33:47 1997
}elsif ($date =~ /^\w+\s+(\w+)\s+\d{1,2} \d+:\d+:\d+ (GMT
)?(\d{4})/) {
$mois = $1;
$annee =$3;
# format de date inconnu
}else {
$incorrect = 1;
last;
}

# On vérifie le format du mois
if ($mois !~ /^\d+$/) {
$mois =~ y/éûA-Z/eua-z/;
if (!$lesmois{$mois}) {
$incorrect = 1;
}else {
$mois = $lesmois{$mois};
}
}elsif (($mois < 1) or ($mois > 12)) {
$incorrect = 1;
}
$mois = "0".$mois if $mois =~ /^\d$/;

# On vérifie le format de l'année
if ($annee =~ /^[89]\d$/) {
$annee = "19".$annee;
}elsif ($annee !~ /^19[89]\d$/) {
$incorrect = 1;
}

last;
}

# ligne vide = fin des entêtes
if (/^\s*$/) {
last;
}
}
close MSG;
# Si on ne reconnait pas la date, on va voir le mail
if ($incorrect) {
`emacs $m`;
print "Mois: ";$mois_in = <STDIN>;chomp $mois_in;
print "Année: ";$annee_in = <STDIN>;chomp $annee_in;
$mois =$mois_in if $mois_in;
$annee =$annee_in if $annee_in;
}

# Un nouveau mois
if (!-d "$rep_dest/$annee-$mois") {
print "$annee-$mois\n";
`mkdir $rep_dest/$annee-$mois`;
}

if (!-d "$rep_dest/$annee-$mois/arctxt") {
print "$annee-$mois\n";
`mkdir $rep_dest/$annee-$mois/arctxt`;
}

$nummsg{$annee}{$mois}++ while (-e
"$rep_dest/$annee-$mois/arctxt/$nummsg{$annee}{$mois}");

# On copie le fichier
`mv $m $rep_dest/$annee-$mois/arctxt/$nummsg{$annee}{$mois}`;
$nummsg{$annee}{$mois}++;
}




Archives gérées par MHonArc 2.6.19+.

Haut de le page