J'ai réalisé un petit script pour sauvegarder mon répertoire:
/var/cache/apt/archives/
il est en perl. J'ai pensé que cela pouvait vous intéresser.
il s'agit de la version version 0.5.
Il est donc nécessaire de modifier la ligne $rep_sauv.
Il s'agit du répertoire de sauvegarde.
et de la ligne my $nom
Il s'agit du non du CD une fois gravé.
Pour terminer, un petit
apt-get autoclean
sauv_package
et il ne vous reste plus qu'a graver le répertoire de sauvegarde sur un
CD.
Voici le script, qu'il vous suffit de recopier et de copier dans
/usr/local/bin/sauv_package
******************************Début Script*****************
#!/usr/bin/perl -w
# Création par Zuthos 2004
# zuthos@laposte.net
# sauv_package
# version 0.5
use strict;
use Getopt::Long; # module pour accepter les options
use File::Copy; # module copie de fichier
my $rep="/var/cache/apt/archives/"; # repertoire contenant les packages
my $fichier;
my $rep_sauv="/home/USER/apt"; # repertoire de sauvegarde
my $fich_package="$rep_sauv/Packages";
my $fich_ovver="$rep_sauv/ovver.cache2";
my $fich_ovver_b="$rep_sauv/ovver.cache"; # utile pour créer le fichier
package
my $nom="Debian GNU/Linux 3.0 r0 \"Woody\" - UnOfficial i386 Binary-8 (20040717)"; # nom du futur CD
my $stat=0;
my @nouv="";
# Création de l'arborescence de sauvegarde
mkdir $rep_sauv,0777 ;
mkdir "$rep_sauv/.disk",0777;
# création du fichier info du CD avec le nom du CD
open(INFO,">$rep_sauv/.disk/info");
print INFO $nom ;
close (INFO);
# recuperation de la liste des package
opendir(AR,"$rep") || die "Impossible d'ouvrir $rep : $!";
my @fichiers=grep(/\.deb/i, readdir AR);
close (AR);
# copie de tous les fichiers vers le repertoire de destination
# et préparation du fichier de control Package
foreach $fichier (@fichiers) {
copy("$rep$fichier" , "$rep_sauv/$fichier") || warn "Impossible de copier le fichier : $!";
system("dpkg-deb -I $rep_sauv/$fichier | grep Package: >> $fich_ovver");
system("dpkg-deb -I >> $rep_sauv/$fichier | grep Priority: >> $fich_ovver");
system("dpkg-deb -I $rep_sauv/$fichier | grep Section: >> $fich_ovver");
print "$fichier : copié\n";
}
##################Création du fichier Ovver
open(FICHOVVER,"$fich_ovver");
open(FICHOVVERB,">$fich_ovver_b");
while(<FICHOVVER>) {
if(m/Package:/) {
$_=substr($_,10,-1);
print FICHOVVERB "$_ " ;
}
if(m/Priority:/) {
$_=substr($_,11,-1);
print FICHOVVERB "$_ " ;
}
if(m/Section:/) {
$_=substr($_,10);
print FICHOVVERB $_ ;
}
}
close(FICHOVVERB);
close(FICHOVVER);
#############Création du fichier Package
system("dpkg-scanpackages $rep_sauv/ $fich_ovver > $fich_package");
system("gzip -c $fich_package > $fich_package.gz");
******************************Début Script*****************
Voila, en espérant que cela sera utile. Bien entendu, vous pouvez
modifier et améliorer ce script. Pour info, j'ai prévu que la version
1.0 permettent de modifier par ligne de commande le non du CD ...