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
Methode 1
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"
Methode 2
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
Diskussion