Archiv der Kategorie: Linux

Computer / Laptops mit Server synchron halten

Man kennt das Problem wenn man mehrere Rechner hat. „Hier fehlt eine Datei die ich auf dem Laptop hatte.“ „Die Datei war dann doch woanders.“ Sowas ist auf dauer zeitaufwendig und zerrt an den Nerven die Dateien zu suchen. Besser ist wenn alle Daten auf einem Homeserver liegen und man die Rechner so aktuell halten kann. Folgendes lässt sich mit rsync bewerkstelligen.

Auf dem Server

Zuerst einmal müssen Sie dafür Sorgen das der rsync Daemon automatisch beim booten mitstartet. Die Einstellung nehmen Sie in YaST in Systemdienste (Runlevel) vor. Stellen Sie im Expertenmodus den Dienst rsyncd so ein das er bei Runlevel 3 und 5 mitstartet. Die Einstellungen übernehmen Sie nun.

Öffnen Sie nun eine Konsole und verschaffen Sie sich mittels su Rootrechte. Mit dem Befehl vi /etc/rsyncd.conf können Sie die Konfigurationsdatei von rsyncd öffnen. Hier tragen Sie nun folgendes ein bzw. ändern die Einstellungen:


gid = users
read only = true
use chroot = true
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow =
slp refresh = 300
use slp = false

[homefreigabe]
path = /home/detlev/
comment = syncordner
auth users = detlev
secrets file = /etc/rsyncd.secrets
read only = false
uid= 1000

(Sie müssen die Taste i drücken um in den Einfügemodus zu gelangen)

detlev

ersetzen Sie durch den Benutzer der die Daten später besitzen soll. Bei

path

muss der Ordner stehen der die Daten später aufheben soll. Bei

uid

muss die ID des Benutzers detlev eingegeben werden. Diese können Sie zum Beispiel in YaST nachschauen. Speichern Sie mit dem Befehl Esc gefolgt von :wq

Nun öffnen Sie mit vi /etc/rsyncd.secrets und geben Sie dort den Benutzer mittles seinem SMB-Passworts ein. In diesem Falle:

detlev:seinpasswort

Dies können Sie nun auch speichern. Sollte detlev noch kein SMB-Passwort besitzen können Sie dies mit dem Befehl smbpasswd erstellen.

Nun starten Sie mittels rcrsyncd restart den Dienst neu. Dieser übernimmt nun auch die Einstellungen.

Bitte beachten Sie das sie in der SuSEFirewall den Dienst noch freigeben müssen. Ansonsten kann dieser nicht nach außen kommunizieren.

Auf dem PC

Auf dem PC erstellen Sie mit einem Editor Ihrer wahl folgendes Scripst:

Zum Sichern

#!/bin/bash
rsync -auv --delete --password-file=rsync.pwd --exclude=/.* --exclude=Videos/* ~/ detlev@192.168.1.42::homefreigabe
sleep 2

Speichern Sie dies unter backup.sh

Zum Zurückspielen

#!/bin/bash
rsync -auv --delete --password-file=rsync.pwd --exclude=/.* --exclude=Videos/* detlev@192.168.1.42::homefreigabe ~/
sleep 2

Speichern Sie dies unter aktualiseren.sh

Die IP durch die des Servers erstetzen, sowie natürlich den Benutzernamen und den Pfad.

In den beiden Beispielen werden alle versteckten Dateien und Ordner ignoriert sowie der Ordner Videos. Nachdem rsync fertig ist bleibt das Script noch 2 Sekunden stehen. Wird es nämlich in einem Fenster aufgerufen so lassen sich die Ausgaben am Ende nicht mehr sehen, da es zu schnell schließt.

Nun im gleichen Ordner eine Datei

rsync.pwd

erstellen und das SMB-Passwort eintragen. In diesem Falle

seinpasswort

Die Datei abspeichern und nur für den eigenen Benuter lesbar und schreibbar machen. Ansonsten verweigert rsyncd die Arbeit.
Sinnvoll ist es die Datein im Ordner ~/bin abzulegen. Nun können Sie die ersten Synchronisation mittels ./backup.sh durchführen. So werden die Daten auf den Server geladen. Andere Dateien von anderen Rechnern MÜSSEN!!! manuell in das Verzeichnis gelegt werden. rsync würde Sie sonst löschen. Die beiden Scripte können so übernommen einfach auf die anderen Rechner kopiert werden. Die Passwortdatei erstellen Sie einfach auf alle anderen Rechner.

Sinnvoll ist es beim hochfahren Dateien zurückzuspielen und beim herunterfahren sichern. Der erste Upload und der erste Download müssen vollständig sein. Ansonsten überschreibt rsync andernfalls noch Daten die eigentlich gesichert werden sollten.

Icons zu den Scripten

In KDE habe ich mir in die Kontrollleiste zwei Verknüpfungen angelegt. So kann ich schnell meine Daten sichern. Hier besteht nur das Risiko das man nicht ausversehen das falsche Icon betätigt.

Regelmäßiges Backup einer Festplatte mit rsync

Wie schon in meinem vorherigen Blogpost geschrieben befindet sich in meinem Server zwei 160 GB Festplatten. Hier liegt die Idee nahe eine Festplatte als Sicherungsmedium zu verwenden, dass regelmäßig die andere Festplatte spiegelt.

Leider besitzt mein Mainboard keinen RAID-Controller, so dass ich auf rsync ausweichen muss. rsync kann eine Quelle und ein Ziel synchron halten, allerdings nur in eine Richtung. Wird im Ziel etwas geändert, gelöscht oder angelegt kann dies nicht auf die Quelle zurückgeführt werden. Dies ist in diesem Falle auch nicht wichtig, da an dem Backup eh keine Änderungen vorgenommen werden. Die Backups werden mittels cron automatisiert, so das man sich darum keine Gedanken mehr machen muss und es nicht vergessen kann.

Lassen Sie sich nicht von der länge dieses Artikels abschrecken. Ich habe Ihn nur sehr ausführlich geschrieben damit man die Schritte klar nachvollziehen kann.

Schritt 1: Festplatte vorbereiten

Da wir wie schon erwähnt die zweite Festplatte komplett für die Datensicherung nutzen werden, müssen wir sie dementsprechend einrichten. Dazu habe ich sie mit einem ext4 Dateisystem formatiert und standardmäßig in /backup eingehangen. Dies können Sie ganz einfach mit YaST erledigen. In /backup wird das System später gespiegelt.

Schritt 2: rsync Befehl bauen

Damit rsync später weiß, was es kopieren soll braucht es eine etwas längeren Befehlssatz:

rsync -auv --log-file=/var/log/rsync_backup --delete --exclude=/sys --exclude=/tmp --exclude=/proc --exclude=/mnt --exclude=/dev --exclude=/backup / /backup

Diesen werden wir nun auseinander nehmen, damit sie wissen was genau passiert.

  • rsync der Befehl an sich
  • -auv Hier muss man noch einmal etwas tiefer gehen. Das -a steht eigentlich für mehrere Optionen die in einem zusammengefasst sind. -a umfasst die Optionen r, l, p, t, g und D. Dass heißt, dass rsync alle Unterverzeichnisse mit verabreitet (r), symbolische Links mitkopiert (l), die Rechte der Dateien und Order beibehält (p), die Zeitstempel beibehält (t), die Gruppenrechte beibehält (g) und die Gerätedateien (D). Das –u steht für Update und sorgt dafür das nur neuere Dateien kopiert werden. Das -v steht für verbose und gibt Details auf der Konsole aus was gerade passiert.
  • –log-file=/var/log/rsync_backup Da wir ja einen Server betreiben und das Backup automatisch abläuft können wir leider nicht sehen ob es erfolgreich ist oder ob es Fehlermeldungen gab. Deswegen weisen wir rsync mit diesem Befehl an, einen Log in die Datei /var/log/rsync_backup zu schreiben. Der Pfad und der Name ist frei wählbar. Ist die Datei noch nicht vorhanden wird Sie automatisch angelegt.
  • –delete sorgt dafür das Dateien die auf der Quelle gelöscht wurden auch auf dem Ziel gelöscht werden. Ansonsten würde das Backup mit der Zeit immer voller werden, da Dateien in der Quelle wieder gelöscht werden aber auf dem Ziel verbleiben würden.
  • –exclude=/backup etc. Die exclude Optionen sagen rsync welche Ordner ausgelassen werden sollen. Das der Ordner /backup ausgelassen werden muss ist logisch, das rsync ansonsten nur im Kreis laufen würde. Die Ordner /tmp,  /sys , /proc und /dev sind für ein Update ohne Bedeutung, da diese Dateien vom Betriebssystem dynamisch bei jedem Start von selbst erstellt werden, bzw. bei /tmp es sich um temporäre Dateien handelt. Der Ordner  /mnt muss ausbleiben weil darin externe Medien wie DVDs etc. eingebunden werden die rsync dann auch kopieren würde. Beim nächsten Durchlauf würde diese Dateien wegen der –delete Option zwar wieder gelöscht werden, allerdings ist es ein Zeitaufwand der nicht sein muss.
  • / Das Quellverzeichnis
  • /backup Das Zielverzeichnis.

Nun testen Sie Ihren Befehl nach gründlichen durchschauen durch und lassen Sie das erste Backup durchlaufen. Der Befehl muss als root ausgeführt werden, damit alle Dateien kopiert werden können. (Achtung: Bei falscher Handhabung kommt es zum Datenverlust)

Sicherung automatisieren

Speichern Sie ihrem rsnc Befehl nun als script in dem root Ordner unter /root/bin/ ab. Dazu können Sie vi benutzen. In dem oben genannten Falle sähe das Script so aus:

#! /bin/sh
rsync -auv --log-file=/var/log/rsync_backup --delete --exclude=/sys --exclude=/tmp --exclude=/proc --exclude=/mnt --exclude=/dev --exclude=/backup / /backup

Um das Script anzulegen geben Sie vi rsync_backup ein. Wenn sich vi geöffnet hat drücken Sie i um in den Eingabemodus zu gelangen. Nachdem Sie das Script eingetippt haben drücken Sie Esc und geben dann :wq ein, gefolgt von einem Enter. Das w steht für write und da q für quit. Damit werden die Daten geschrieben und vi beendet.
Geben Sie nun als root folgenden Befehl ein um dem crondeamon einen neuen Task einzuplanen:

crontab -e

Nun öffnet sich der Editor vi. Drücken Sie nun i um in den Eingabemodus zu gelangen und tippen Sie folgendes ein. Was schon vorhanden ist müssen Sie nicht wiederholen:

SHELL=/bin/sh
* 18 * * 0 /root/bin/rsync_backup

Das * 18 * * 0 steht für jeden Sonntag um 18 Uhr soll der Befehl /root/bin/rsync_backup ausgeführt werden. Wie Sie ihr eigenen Zeitplan erstellen können habe ich weiter unten verlinkt. Drücken Sie nun Esc. Tippen Sie nun :wq ein und bestätigen Sie mit Enter.

Interessante Links zu dem Thema

 

Tintenfüllstand unter Linux abrufen

Um unter Linux seinen Tintenfüllstand abzurufen gibt es ein kleines Terminalprogramm mit dem passenden Namen „Ink“. Bei openSUSE finden Sie es im Packman Repository. Die Bedienung ist mehr als einfach. Als root geben Sie folgenden Befehl ein:
ink -d /dev/usb/lp1
Alternativ reicht auch ink -p usb. Dies wollte mein openSUSE allerding nicht annehmen.
Die Ausgabe lautet im oben genannten Fall bei meinem Epson Stylus C86:

ink v0.5.0 (c) 2009 Markus Heinz

EPSON Stylus C86
Photoblack:                    57%
Cyan:                          99%
Magenta:                       90%
Yellow:                        68%

Welche Drucker unterstützt werden können Sie auf der Webseite http://ink.sourceforge.net/ einsehen.