Sie sind nicht angemeldet.

1

22.10.2010, 23:09

RSYNC Mirror (LAN) / Dist Files

Hey,

hätte da ein paar Fragen zu rsync und den Dist Files. (Kann es leider noch nicht umsetzen, aber vorher kann ich mich ja mal informieren)

Habe einige Tutorials zum Installieren eines rsync Mirrors im eigenen Netz gelesen, das sollte so weit kein Problem darstellen.
Meine momentan Idee sieht in etwa wie folgt aus:
1) Ein "Server" der 24/7 im Netz hängt und 1x am Tag "eix-sync" ausführt
2) Ein Rechner, der beim Shutdown ebenfalls "eix-sync" (mit RSYNC Adresse des Servers) ausführt
3) Der Rechner führt dann noch "emerge -uDNp world" aus (oder ein Script, was wohl eher der Fall sein wird)
4) Durch das Script/Update wird eine Datei an den Server geschickt
5) Der Server lädt z.B. über Nacht die benötigten (und wirklich nur die, und nicht den ganzen DIST Files Ordner vom Sync Server^^[fetchonly]) runter
6) PC wird gestartet und nach dem Login wird dann "emerge -uDN world" ausgeführt, also die Updates eingespielt.
(Hintergrund: DSL Light -.-)

Wie es funktionieren KÖNNTE:
1) per Cron
2)-4) per INIT Script
5) emerge --fetchonly [Paketnamen]
6) INIT Script oder Autostart nach dem Login / hier könnte man ja auch den DIST Files Ordner auf dem Server als Netzwerklaufwerk einbinden

Liege ich so weit richtig oder habe ich irgendwo einen Denkfehler?^^

S7evinK

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »^S7evinK« (03.01.2011, 20:04)


2

02.01.2011, 21:11

Hab mir ein paar mal
http://www.gentoo.de/doc/de/rsync.xml#doc_chap2
angeschaut.

Hab auf meinem Router nun DD-WRT installiert und per opkg (Paketverwaltung) rsync nachinstalliert.
Da ich nun aber kein "eix-sync" bzw "emerge --sync" darauf ausführen kann, muss ich das per rsync machen.
Da stell ich mir nun die Frage, wie das funktioniert, dass ich den Portage tree syncen kann.

Um das zu umgehen, könnte ich jede Nacht den Snapshot runterladen.

Jemand eine Idee?

3

02.01.2011, 22:48

Ich weiss nicht, ob es so kompliziert sein muss.
Habe bei mir auf einem Server einfach das /usr/portage als NFS freigegeben und bei anderen Systemen unter /usr/portage gemounted. Somit wird alles nur 1x aktualisiert.
Auf dem Server führe ich ein "eix-sync" aus, auf den anderen Systemen nur ein "eix-sync -u".
Bezüglich der Distfiles: Der erste Rechner, der eine Datei benötigt, lädt diese runter und legt sie auf dem NFS-Share ab. Die anderen Systeme können bei der Aktualisierung diese dann benutzen.
So mal als Alternative.

Bezüglich des DD-WRT Vorhabens:

Quellcode

1
2
# emerge --info | grep RSYNC
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
Das sollte helfen.

Wie Du siehst, wird distfiles nicht mit aktualisiert. Du könntest auf den Clients eine Liste benötigter Pakete mit

Quellcode

1
emerge -upfDN world
erstellen und diese auf dem DD-WRT mit wget abarbeiten.

Weitere Ideen: Schaue Dir app-portage/emerge-delta-webrsync und

Quellcode

1
FEATURES="parallel-fetch"
an.
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

4

03.01.2011, 19:42

Ich weiss nicht, ob es so kompliziert sein muss.
Habe bei mir auf einem Server einfach das /usr/portage als NFS freigegeben und bei anderen Systemen unter /usr/portage gemounted. Somit wird alles nur 1x aktualisiert.
Auf dem Server führe ich ein "eix-sync" aus, auf den anderen Systemen nur ein "eix-sync -u".
Bezüglich der Distfiles: Der erste Rechner, der eine Datei benötigt, lädt diese runter und legt sie auf dem NFS-Share ab. Die anderen Systeme können bei der Aktualisierung diese dann benutzen.
So mal als Alternative.
Aufjedenfall eine bessere Idee. ;)
Bei meiner Idee hätte ich nur "distfiles" gemounted.

Zitat

Bezüglich des DD-WRT Vorhabens:

Quellcode

1
2
# emerge --info | grep RSYNC
PORTAGE_RSYNC_OPTS="--recursive  --links --safe-links --perms --times --compress --force --whole-file  --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local  --exclude=/packages"

Das sollte helfen.
Hab "rsync -av $rsync:syncserver" und diesen Parametern ausgeführt, was allerdings nicht das gewünschte Ergebnis erzielt. (Portage Tree auf dem Router, also ein normales eix-sync/emerge --sync)

Aber wenn ich dann auf dem Gentoo System ein "eix-sync" (mit NFS vom Router), sollte das ja auch da sein.
Da muss ich ja nur noch das Script für den Router erstellen, also wget. :)


Durch das lahme DSL, will ich nicht 'tagsüber' das Internet wegen Updates lahmlegen. Das darf der Router nachts machen, wenn kein Client mehr angemeldet ist.
Hab zwar nur ein Gentoo System hier am laufen, aber ist mir dann doch lieber, wenn ich Surfen kann und die Updates nachts runtergeladen werden :P


Dank dir :)

5

03.01.2011, 20:00

Hab "rsync -av $rsync:syncserver" und diesen Parametern ausgeführt
Lass das "-av" weg. Es sind emerge Optionen und nicht rsync-Optionen. ;)
An sonsten, gilt das Thema als [erledigt]?
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

6

03.01.2011, 20:04

Quellcode

1
2
rsync --recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --tim
eout=180 --exclude=/distfiles --exclude=/local --exclude=/packages rsync://ftp.join.uni-muenster.de/gentoo/


selber Effekt. :)

Aber ja, da ich das eix-sync auf dem Gentoo System, mit NFS-Share, ausführe, sollte das ja klappen. :)
Also [erledigt]

7

03.01.2011, 20:10

Dem Rsync Befehl fehlt noch das Ziel, also

Quellcode

1
rsync --recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages rsync://ftp.join.uni-muenster.de/gentoo/rsync --recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages rsync://ftp.join.uni-muenster.de/gentoo/ /exports/portage
An sonsten macht es keinen Sinn bei nur einem Client das /usr/portage auf NFS zu legen.
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

8

03.01.2011, 20:15

Für Dich bestimmt auch interessant: [gelöst] Portage DL-Speed Begrenzung moeglich?
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

9

03.01.2011, 20:29

Dann müsste man irgendwie, während des Downloads, mitbekommen, ob die Leitung "frei ist", damit mit "Fullspeed" geladen werden kann.
Bei 45kb/s merkt man schon einiges, auch wenn nur jemand anderes Online ist. :/

10

03.01.2011, 20:53

Eventuell kannst Du auch mit QoS des DD-WRT schon was erreichen: http://www.dd-wrt.com/wiki/index.php/Qos
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

11

03.01.2011, 21:10

*DD-WRT genauer anschau*
Hört sich aufjedenfall mal gut an.

So lange läuft DD-WRT noch nicht bei mir.

Bin Froh, dass erstmal das mit opkg läuft.. ipkg ging nich wirklich, weils nen Atheros Chip ist. :/

Danke :)