Re: lokales Hardlink Backup

Autor: Werner Holtfreter <Holtfreter_at_gmx.de>
Datum: Wed, 12 Oct 2011 20:51:11 +0200
Am Mittwoch, 12.10.2011 09:32:15 schrieb Thomas Stiefel:

> Am 12.10.2011 02:09, schrieb Werner Holtfreter:
> > vielleicht findet ja jemand mein Script nützlich, das jede
> > Stunde einen Schnappschuss von /home im gleichen Dateisystem
> > platzsparend mit Hardlinks speichert.
> 
> Dafür gibt es eigentlich ein fertiges Programm, das dies alles
> und ressourcenschonend mit rsync erledigt: rsyncbackup.

> Ich will dir ja nicht zu nahe treten, aber rsyncbackup ist sicher
> einiges effektiver und ressourcenschonender als dein Script.

Ich habe die manpage mal durchgesehen, ob rsync überhaupt Quelle und 
Ziel mit Hardlinks verbinden kann (falls sie im gleichen Dateisystem 
liegen, was gegeben ist). Fehlanzeige, rsync kann nur Hardlink-
Beziehungen innerhalb Quelle identisch aufs Ziel übernehmen. So 
jedenfalls verstehe ich das.

Der Geschwindigkeitstest im Anlegen oder auch nur Ergänzen von 
Hardlinks zwischen cp und rsync fällt also aus. Dass rsync beim 
aktualisieren von Dateien (statt Links) schneller ist, wurde nie 
bestritten.

LEIDER LIEGT MEINEM SKRIPT EIN FUNDAMENTALER DENKFEHLER ZU GRUNDE:

Zwecks Platzersparnis kopiert es ja keine Dateien, sondern legt nur 
Hardlinks an. Werden Dateien gelöscht, verringert sich nur der 
Linkzähler, die Datei bleibt noch erhalten. Wird sie jedoch geändert, 
ändert sich (natürlich) auch das, was über die gesicherten Hardlinks 
aufgerufen werden kann - es ist ja ein und dieselbe Datei!
DAS SKRIPT IST WERTLOS.

> > Kann man das drei mal eingefügte "nice -n 19 ionice -c 3"
> > irgendwo zentral anordnen, so dass es für größere Teile oder
> > für das ganze Script gilt (abgesehen davon, es beim Aufruf
> > anzugeben, was wohl auch gehen sollte)?
> 
> Klar geht das. Einfach am Anfang des Scripts dss Ganze als
> Parameter setzen und später nur den Parameter. Also ungefähr so:
> 
> PERF="nice -n 19 ionice -c 3"
> 
> while [ $i -ge 2 ]
> do
>      $PERF mv backup.$[i-1] backup.$i
>      i=$[i-1]
> done

Ja, ich meinte aber, ob man nice vielleicht vor while oder do setzen 
kann oder vor noch zu setzende Klammern, damit der Klammerinhalt 
wunschgemäß priorisiert wird.

> > Das Script wird beim booten gestartet. Die Echomeldungen
> > erscheinen in der Konsole zunächst ganz normal linksbündig.
> > Nach dem Hochfahren gibt es nach jedem "echo" nur noch einen
> > Zeilenwechsel aber keinen Rücklauf mehr, das sieht dann so
> > aus:
> > 
> > jksjafsaklfj jklsjdf skjksdl
> > 
> >                             jkldsj skdl jkldsjf jdsklfj
> > 
> > Wie kommt das und wie kann man das verbessern?
> 
> Versuche mal folgendes:
> 
> echo "$(date +%F' '%T): LOKAL backup.$i in backup.delete schieben"
>   anstatt
> echo $(date -I;date +%T)" LOKAL backup.$i in backup.delete schieben"

Das ändert leider nichts am Ergebnis. Lösung wird weiter gesucht.
-- 
Viele Grüße
Werner Holtfreter
-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/
Empfangen am 12.10.2011

Dieses Archiv wurde generiert von hypermail 2.2.0 : 12.10.2011 CEST