Inkrementelle Backups mit Attic

Seit Jahren dreht die Festplatte des Heimrechners munter Ihre Scheiben zum Takt von Prozessorlüfter und CD-Laufwerk. Fällt irgendwann das unterschwellige Surren weg so dauert es nicht lange bis der nun stetig bleicher werdende Nutzer erkennt: Festplatte hinüber – meine Daten sind weg. Wild werden dann andere Speicherorte nach Backups durchforstet und immer wieder drängt sich eine Frage in den Vordergrund: „Warum habe ich keine regelmäßigen Backups erstellt?“.

In Zeiten von Apples TimeMachine und Windows Dateiversionsverlauf fühlt sich der Linux-Nutzer etwas ausgeschlossen. Jede Distribution hat eine eigene Lösung zum Sichern der Daten und wer nicht auf Diensten wie DropBox und Google Drive vertrauen möchte tut sich schwer daran eine distributionsübergreifende Lösung zu finden.

In diesem kurzen Blogeintrag möchte ich Attic hervorheben. Attic ist ein ausgezeichnetes Tool um inkrementelle Backups zu erstellen und zu verwalten.

Weiterlesen


Hintergrundprozesse mit begrenzter Lebensdauer

Ein nützliches kleines Tool hat vor einiger Zeit in die GNU coreutils mit Version 7 Einzug gehalten und sollte damit auf den meisten Systemen automatisch vorhanden sein: timeout.

Es kommt im Alltag sehr häufig vor, dass man die Ausführungszeit eines Cronjobs oder anderen Prozesses nicht vorhersagen kann, aber limitieren möchte. In diesem Fall kann man den Prozess mit vorangestelltem timeout starten. Ein (sinnfreies) Beispiel:

> timeout -s USR1 -k 5 10 sleep 60
> echo $?
124
> timeout -s CONT -k 5 10 sleep 60
zsh: killed     timeout -s CONT -k 5 10 sleep 60
> echo $?
137

startet im Hintergrund einen 60 Sekunden schlafenden Prozess. Nach 10 Sekunden bekommt dieser das USR1 Signal (-s USR1) gesendet und beendet sich. Im zweiten Beispiel, wird CONT als Abbruchsignal geschickt, dass der Prozess ignoriert. Nach weiteren 5 Sekunden wird dann das KILL Signal geschickt (-k 5).

Man kann am Exitstatuscode des Prozesses festmachen, ob ein Fehler auftrat, der Prozess ausgetimed ist und das -s Signal bekam, oder (-k) getötet werden musste:

  • 124 Timeout und Beendigung durch das erste Signal
  • 125 Fehler in timeout selbst
  • 126 Das zu startende Programm existiert, kann aber nicht gestartet werden
  • 127 Das zu startende Programm kann nicht gefunden werden
  • 137 KILL musste gesendet werden

Die englische Dokumentation auf gnu.org.