Benutzer-Werkzeuge

Webseiten-Werkzeuge


Writing /srv/www/htdocs/udo/singollo.de/linux.singollo.de/public_html/data/cache/b/bd1410be3a4a72b2dadeb2cdb99fdd13.metadata failed
repo:lokale_repositories_aktuell_halten

Lokale Repositories mit rsync aktuell halten

Wer wie ich ein Intranet mit mehreren Rechnern hat, der wird sich sicher ab und an ärgern, wenn es Probleme mit dem Internet gibt und man auf dringende Updates angewiesen ist. Die OSS- und non-OSS-Verzeichnisse kann man sich ja noch von der Install-DVD zusammenbasteln, aber bei den regulären Updates versagt dies. Es lohnt sich, wenn man einen lokalen Spiegel eines der gängigen FTP-Server betreibt. Allerdings muss man dafür sorgen, das dieser Spiegel auch immer aktuell gehalten wird. Hier lohnt sich ein Blick auf rsync. Um allerdings nicht jedesmal die Quellen per Hand zu aktualisieren, wird das ganze in ein Script gegossen. Es bietet sich dabei das Perl-Modul File::Rsync an.

rsync_update.pl

#!/usr/bin/perl -w

use strict;
use File::Rsync;

# Variablen setzen
my $path = "/srv/ftp/pub/updates/";
my %path = (
    'ftp5.gwdg.de::pub/linux/suse/suse_update/10.2/repodata/'=>'repodata',
    'ftp5.gwdg.de::pub/linux/suse/suse_update/10.2/scripts/'=>'scripts',
    'ftp5.gwdg.de::pub/linux/suse/suse_update/10.2/rpm/i586'=>'rpm',
    'ftp5.gwdg.de::pub/linux/suse/suse_update/10.2/rpm/noarch'=>'rpm',
    'ftp5.gwdg.de::pub/linux/suse/suse_update/10.2/rpm/x86_64'=>'rpm'
    );

# Module instanzieren und Variablen setzen
my %exc = qw();
my $rs = File::Rsync->new( { compress => 1, exclude => [%exc], delete => 1, stats => 1, times => 1, links => 0, delete => 1, recursive => 1, verbose => 1} );
#$rs->defopts();

my @ftp = keys %path;
my @local = values %path;

while (@ftp) {
  my $src = pop(@ftp);
  my $dest = $path.pop(@local);
  print "Syncing ".$src." => ".$dest."\n";
  $rs->exec( { src => $src, dest => $dest } ) or warn "rsync failed\n";
  foreach my $out ($rs->out) {
    print $out;
  }
  #print $rs->lastcmd."\n";
}
repo/lokale_repositories_aktuell_halten.txt · Zuletzt geändert: 07.10.2012 18:31 (Externe Bearbeitung)