SyncHierarchie
Aus OpenNewsNetwork
|
Hierarchien syncronisieren
Diese Seite erklärt die notwendigen Schritte, um von einem vorhandenen Newsserver mittels Checkgroups eine Kopie der vorhandenen Gruppen zu erstellen.
* actsync bzw. actsynd * Für de.*: die Checkgroups einspielen. Dazu bietet sich folgendes an:
su news cd /tmp wget http://www.dana.de/mod/checkgroups.txt /usr/lib/news/docheckgroups < /tmp/checkgroups.txt > /tmp/new.sh bash /tmp/new.sh
Pfade anpassen ist natürlich selbstverständlich. Wer, wie ich, die Ausführung für wget aus Sicherheitsgründen nur für root freigegeben hat, muss das Holen der checkgroups.txt Datei vor das su news legen.
Anmerkung: In einem öffentlichen Verzeichnis wie /tmp Dateien mit vorhersagbaren Namen anzulegen, ist ein Sicherheitsproblem.
Variante 1
Eine andere Version als Skript die zum Beispiel durch cron ausgeführt werden könnte:
#!/bin/bash cd /tmp wget http://www.dana.de/mod/checkgroups.txt echo "/usr/lib/news/bin/ctlinnd throttle maintenance" > /tmp/new.sh /usr/lib/news/bin/docheckgroups < /tmp/checkgroups.txt >> /tmp/new.sh rm /tmp/checkgroups.txt bash /tmp/new.sh rm /tmp/new.sh /usr/lib/news/bin/ctlinnd go maintenance
Variante 2
Dieser Variante kommt mit allen Hierarchien der Kategorie "Reine Gruppenliste" und "Posting der Gruppenliste" zurecht (siehe Checkgrouplinks). Die Kopfzeilen werden automatisch abgeschnitten, falls vorhanden.
Aufgerufen wird das Skript mit einer Liste von URLs oder Dateinamen, diese werden der Reihe nach abgearbeitet. Beginnt ein Kommandozeilenargument mit "http:" wird es mit wget heruntergeladen, ansonsten als Datei eingelesen.
#!/bin/bash CHECK=/usr/lib/news/bin/docheckgroups CTLINND=/usr/lib/news/bin/ctlinnd echo "$CTLINND throttle checkgroups" for i in "$@"; do if [ "${i#http://}" = "$i" ]; then cat "$i" else wget -q -O- "$i" fi | awk 'FNR==1&&/^[A-Za-z]+[: ]/{f=-1} /^[[:space:]]*$/{f++} {if(!f)print$0}' done | $CHECK | sed '/^exit\>/d' echo "$CTLINND go checkgroups"
Angenommen, das Skript wird mit dem Dateinamen check abgespeichert, dann wird es in etwa so ausgeführt:
sh check http://www.usenet.dk/dk-admin/newsgroups http://www.usenet.at/checkgroups/checkgroups-latest | sh
Oder auch so:
wget http://www.usenet.dk/dk-admin/newsgroups wget http://www.usenet.at/checkgroups/checkgroups-latest sh check newsgroups checkgroups-latest | sh
Wenn man das abschließende " | sh" durch " | less" ersetzt, kann man sich die resultierenden Aktionen vorher einmal ganz unverbindlich ansehen.

