wiki:tipps_und_tricks:repository_rsync

Wie mache ich mir ein Lokales openSUSE-Repo

rsync

rsync -av --delete-after ftp5.gwdg.de::pub/opensuse.new/distribution/openSUSE-stable/repo/oss/ openSUSE/ 

FTP

Da nicht alle Firewalls rsync durchlassen bzw. nicht jeder Mirror rsync anbietet, habe ich mich auf die Suche nach Alternativen gmacht

Ein Skript wurde entwickelt

sync-updaterepo.sh
#!/bin/bash
 
updateurl="http://download.opensuse.org/update/12.3/"
repodir="/srv/ftp/repo_updates/"
architectures="i586 i686 noarch repodata x86_64"
logfile="/var/log/copyrep.log"
datum=`date +%Y.%m.%d\ %H:%M:%S`
 
echo $* | grep -iq -e "--verbose"
 
if [ "$?" = "0" ]
then
        verbose=on
        echo "verbose = on"
else
        verbose=off
        echo "verbose = off"
fi
 
#verbose=on
 
 
logging (){
 
case $1 in
        "ok")
                if [ "$verbose" = "on" ]
                then
                        echo "`date +%Y.%m.%d\ %H:%M:%S` [  OK  ] $2" >> $logfile
                fi
                ;;
        "fail")
                echo "`date +%Y.%m.%d\ %H:%M:%S` [ FAIL ] $2" >> $logfile
                ;;
        "load")
                echo "`date +%Y.%m.%d\ %H:%M:%S` [ LOAD ] $2" >> $logfile
                ;;
        *)
                echo "`date +%Y.%m.%d\ %H:%M:%S` $1" >> $logfile
esac
 
fehlerauswertung(){
        if [ ! $? = 0 ]
        then
                logging "$1" "$2"
        fi
        }
 
if [ ! -e $logfile ]
then
        touch $logfile
fi
 
#Da die Metadaten des Repos bei jeder Änderung neu aufgebaut wird, löschen wir das Verzeichnis repodata
rm -r $repodir/repodata
 
logging "starting Repocopy"
echo -e "Generiere Verzeichnisstruktur"
 
for i in $architectures
do
        mkdir -p $repodir/$i > /dev/null 2>&1
done
 
 
for arch in $architectures
do
 
        echo -e "Lade Pakete für \"$arch\" herunter"
        logging "begin $arch"
        cd /$repodir/$arch
 
        w3m -dump $updateurl/$arch/ | tr -s ' ' ' ' | grep "Details" | cut -d"]" -f2 | cut -d" " -f2 > liste.txt
 
        for paket in `cat liste.txt`
        do
                if [ ! -e $paket ]
                then
                        echo -e "\t[ load ]Lade Paket $paket herunter"
                        logging "load" "Lade Paket $paket herunter"
 
                        wget -q $updateurl/$arch/$paket
                        fehlerauswertung "fail" "Paket $paket wurde nicht geladen"
 
                elif [ ! -e $paket.md5 ]
                then
                        wget -q $updateurl/$arch/$paket.md5
                        fehlerauswertung "fail" "MD5 Summe für Paket $paket wurde nicht geladen"
 
                        if [ -e $paket.md5 ]
                        then
                                md5sum -c $paket.md5 >> hashwerte_$arch.txt
                                fehlerauswertung "fail" "MD5 von $paket falsch"
                        fi
                else
                        echo -e "\t[  OK  ] Paket \"$paket\" existiert schon"
                        logging "ok" "Paket $paket bereits vorhanden"
                fi
        done
 
        rm liste.txt
        logging "end $arch"
done
logging "End Copy Repo"

Es gibt ein Paket mirror, dass ein paar Perl-Scripte zur Spiegelung enthält

http://www.linux-club.de/viewtopic.php?f=3&t=92874&p=566008&hilit=ftp+mirror#p566008

Quelle

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
   ___    _  __  ____    __ __  _____
  / _ \  / |/ / / __ \  / //_/ / ___/
 / ___/ /    / / /_/ / / ,<   / (_ / 
/_/    /_/|_/  \___\_\/_/|_|  \___/
 
  • wiki/tipps_und_tricks/repository_rsync.txt
  • Zuletzt geändert: 2015/04/04 16:54
  • von wikiadmin