{"id":9034,"date":"2012-08-29T05:05:08","date_gmt":"2012-08-29T03:05:08","guid":{"rendered":"https:\/\/www.gambaru.de\/blog\/?p=9034"},"modified":"2020-01-05T01:17:39","modified_gmt":"2020-01-05T00:17:39","slug":"backup-leicht-gemacht-lokale-und-entfernte-sicherung-mit-dirvish-rsync-und-ssh","status":"publish","type":"post","link":"https:\/\/gambaru.de\/blog\/2012\/08\/29\/backup-leicht-gemacht-lokale-und-entfernte-sicherung-mit-dirvish-rsync-und-ssh\/","title":{"rendered":"Backup leicht gemacht: Lokale und entfernte Sicherung mit Dirvish, Rsync und SSH"},"content":{"rendered":"<p>An mehreren Stellen habe ich hier schon meine ganz pers\u00f6nlichen <a href=\"https:\/\/www.gambaru.de\/blog\/tag\/backup\/\">Backup-Methoden<\/a> vorgestellt.<\/p>\n<ol>\n<li><a href=\"https:\/\/www.gambaru.de\/blog\/2011\/03\/13\/keep-it-simple\/\">Keep it simple<\/a><\/li>\n<li><a href=\"https:\/\/www.gambaru.de\/blog\/2011\/09\/24\/partimage-simple-backupmethode-auch-fur-altere-rechner\/\">Partimage<\/a><\/li>\n<li><a href=\"https:\/\/www.gambaru.de\/blog\/2011\/12\/06\/eine-weitere-simple-backup-methode-partclone-tinycore-und-sshfs\/\">Partclone<\/a><\/li>\n<li><a href=\"https:\/\/www.gambaru.de\/blog\/2011\/03\/16\/linux-backup-the-debian-way\/\">The Debian Way<\/a><\/li>\n<li><a href=\"https:\/\/www.gambaru.de\/blog\/2012\/05\/31\/apt-clone-backup-in-verbesserter-debian-manier\/\">Apt-Clone<\/a><\/li>\n<li><a href=\"https:\/\/www.gambaru.de\/blog\/2011\/03\/15\/linuxdistributionen-zur-datenrettung-und-backup\/\">Live-CDs (z.B. Clonezilla)<\/a><\/li>\n<\/ol>\n<p>Die Reihe k\u00f6nnte man noch eine Weile mit weiteren guten Alternativen fortf\u00fchren. Oft kombiniere ich auch die ein oder andere Variante, wenn mir Daten besonders wichtig sind. In den vergangenen Wochen habe ich mir endlich <a href=\"http:\/\/www.dirvish.org\/\">Dirvish<\/a> n\u00e4her angeschaut, das Rsync und SSH miteinander verbindet und mir wieder einmal die Frage gestellt: \"Warum eigentlich nicht fr\u00fcher?\". \ud83d\ude42 Wer sowieso schon Rsync und SSH kennt, aber sich die vielen Kommandos nicht merken oder sogar Skripte daf\u00fcr schreiben m\u00f6chte, kann ganz einfach auf Dirvish zur\u00fcckgreifen, das diese Probleme schon vor einer Dekade gel\u00f6st hat.<br \/>\nInteressant ist Dirvish nicht nur f\u00fcr alle, die gerne nach besonders effizienten L\u00f6sungen f\u00fcr die Konsole suchen, sondern es besticht vor allem durch die einfache Konfiguration und der M\u00f6glichkeit die Sicherung vollautomatisch per Cron-Job ablaufen zu lassen und kann auch ganz leicht manuell bedient werden.<br \/>\nIm Folgenden beschreibe ich die Sicherung eines Laptops und eines entfernten vServer mit Hilfe von Dirvish, Rsync und SSH. Dabei werden alle Daten auf eine handels\u00fcbliche USB-Festplatte gesichert, die an den Laptop angeschlossen ist.<\/p>\n<h2>Backup eines lokalen Rechners auf eine USB-Festplatte mit Dirvish<\/h2>\n<p><code>aptitude install dirvish<\/code><\/p>\n<p>Nach der Installation von Dirvish, welches auch automatisch Rsync als Abh\u00e4ngigkeit mitinstalliert, k\u00f6nnt ihr mit der Dokumentation in <em>\/usr\/share\/doc\/dirvish\/HOWTO.Debian.gz<\/em> und im dazugeh\u00f6rigen Beispiel-Ordner sofort loslegen. F\u00fcr die gesamte Konfiguration sind lediglich zwei Dateien entscheidend.<\/p>\n<h3>master.conf<\/h3>\n<p>Die Datei master.conf wird nach <em>\/etc\/dirvish\/master.conf<\/em> kopiert. Hierin werden alle globalen Einstellungen festgeschrieben.<\/p>\n<ul>\n<li><strong>bank:<\/strong> Gibt den Pfad zum Speicherort der Sicherung an. In meinem Fall existieren zwei Verzeichnisse auf einer externen USB-Festplatte, der ich zuvor mit<br \/>\n<code>tune2fs -L backup \/dev\/mapper\/udisks-uuid-und-noch-mehr-Text<\/code><br \/>\neinen k\u00fcrzeren und leichter zu merkenden Namen gegeben habe. Wenn man schon dabei ist, kann man sie auch gleich <a href=\"https:\/\/www.gambaru.de\/blog\/2010\/10\/14\/festplatten-und-usb-sticks-mit-dm-crypt-und-luks-verschlusseln\/\">mit luksformat vorher verschl\u00fcsseln<\/a>.<\/li>\n<li><strong>exclude:<\/strong> Definiert die Verzeichnisse, die <strong>nicht<\/strong> gesichert werden sollen.<\/li>\n<li><strong>Runall:<\/strong> Die zuerst angegebenen Namen bezeichnen die sogenannen Schlie\u00dff\u00e4cher (vault), in denen die Daten gespeichert werden. Ein Schlie\u00dffach ist nichts anderes als ein Unterverzeichnis, das man nach dem zu sichernden Dateisystem benennen sollte. Der Zeitstempel definiert nicht den Zeitpunkt der Ausf\u00fchrung, sondern dient lediglich als Bezugspunkt. Sollte das Backup z.B. aus welchen Gr\u00fcnden auch immer sp\u00e4ter ausgef\u00fchrt werden, wird die Sicherung auf 22.00 Uhr zur\u00fcckdatiert, damit die Logik intakt bleibt.<\/li>\n<li><strong>expire-default:<\/strong> Kann z.B. <em>never<\/em> oder <em>+15 days<\/em> sein und gibt an, wie lange einzelne Sicherungen standardm\u00e4\u00dfig vorgehalten werden sollen.<\/li>\n<li><strong>expire-rule:<\/strong> Wer den Aufbau der Datei crontab kennt, wei\u00df sofort um was es geht. Die erste Zeile besagt, dass am ersten Tag der Woche, dem Montag, erstellte Backups f\u00fcr 3 Monate vorgehalten werden sollen. Man kann mit Hilfe dieser Syntax weitere beliebige Zeitr\u00e4ume und Zeitpunkte definieren.<\/li>\n<\/ul>\n<pre class=\"brush:plain\">bank:\n\t\/media\/backup\/dirvish\/laptop\n\t\/media\/backup\/dirvish\/server\nexclude:\n\tlost+found\/\n\tproc\/\nRunall:\n\tlaptop-root\t22:00\n\tlaptop-home\t22:00\n\tserver-root\t22:00\nexpire-default: +15 days\nexpire-rule:\n#       MIN HR    DOM MON       DOW  STRFTIME_FMT\n\t*   *     *   *         1    +3 months\n#\t*   *     1-7 *         1    +1 year\n#\t*   *     1-7 1,4,7,10  1\n#\t*   10-20 *   *         *    +4 days\n#\t*   *     *   *         2-7  +15 days\n<\/pre>\n<h2>Der Laptop<\/h2>\n<p>Erstellt nun die zweite Konfigurationsdatei f\u00fcr das Schlie\u00dffach laptop-root. In diesem Beispiel w\u00e4re das<br \/>\n<em>\/media\/backup\/dirvish\/laptop\/laptop-root\/dirvish\/default.conf<\/em>.<br \/>\nDefault.conf ist immer richtig und f\u00fcr die meisten Anwendungsf\u00e4lle vollkommen ausreichend. Es lassen sich aber noch zus\u00e4tzliche Konfigurationen erstellen (Branch).<\/p>\n<pre class=\"brush:plain\">client: laptop\ntree: \/\nxdev: 1\nindex: gzip\nlog: gzip\nimage-default: %Y%m%d\nexclude:\n        \/var\/cache\/apt\/archives\/*.deb\n        \/var\/cache\/man\/**\n        \/tmp\/**\n        \/var\/tmp\/**\n        *.bak\n        \/proc\/**\n<\/pre>\n<p>Die Datei ist \u00e4hnlich wie die Datei master.conf aufgebaut. Wichtig sind hierbei vor allem:<br \/>\n<strong>client:<\/strong> In diesem Fall laptop. Wenn dieser Name dem Rechnernamen entspricht (hostname), erkennt Dirvish automatisch, dass es sich um ein lokales Backup handelt und verwendet kein SSH.<br \/>\n<strong>tree:<\/strong> Welches Verzeichnis gesichert werden soll. In diesem Fall das gesamte Wurzelverzeichnis.<br \/>\n<strong>xdev:<\/strong> Kann den Wert 1 oder 0 annehmen. 1 bedeutet, dass die Sicherung auf das angegebene Dateisystem beschr\u00e4nkt bleibt und Dirvish z.B. eingeh\u00e4ngten Verzeichnissen nicht folgen wird. Hat man wie ich \/home auf eine andere Partition installiert, w\u00fcrde dieses beim Wert 1 nicht gesichert werden. Hierzu muss also ein weiteres Schlie\u00dffach mit einer neuen default.conf angelegt werden oder man setzt xdev hier auf 0.<br \/>\nDes Weiteren l\u00e4sst sich der Zeitstempel f\u00fcr das Backup festlegen und Verzeichnisse von der Sicherung ausschlie\u00dfen. Diese Regel gilt zus\u00e4tzlich zu den in der master.conf getroffenen Einstellungen.<br \/>\nF\u00fcr das Schlie\u00dffach \"latop-home\" m\u00fcsst ihr noch einmal die Schritte gehen. Hier \u00e4ndert sich nur der Wert der tree-Variable auf \/home und ggf. die ausgeschlossenen Verzeichnisse.<\/p>\n<h3>Die erste Sicherung - Initialisieren<\/h3>\n<p><code>dirvish --vault laptop-root --init<\/code><br \/>\n<code>dirvish --vault laptop-home --init<\/code><\/p>\n<p>Am n\u00e4chsten Tag k\u00f6nnt ihr dann mit<\/p>\n<p><code>dirvish-runall<\/code><\/p>\n<p>ein neues Backup erstellen, bei dem nur die ge\u00e4nderten Daten gesichert werden. Aufgrund der Verwendung von Hardlinks und der inkrementellen Natur der Datensicherung wird deswegen nur wenig Speicherplatz ben\u00f6tigt. Wird dieser doch einmal knapp, l\u00e4sst sich mit<\/p>\n<p><code>dirvish-expire<\/code><\/p>\n<p>Platz schaffen, indem die in der master.conf definierten Regeln Anwendung finden.<br \/>\nWer einen eigenen Heimserver betreibt, kann auch die Einstellungen in <em>\/etc\/cron.d\/dirvish<\/em> beibehalten, die daf\u00fcr sorgen, dass Dirvish automatisch um 04.22 Uhr ausgef\u00fchrt wird. Wer den Rechner nicht 24\/7 laufen l\u00e4sst, sollte die Datei entfernen oder den Cron-Job auskommentieren.<\/p>\n<h2>Entfernte Sicherung eines vServers mit Hilfe von SSH<\/h2>\n<p>Wenn ihr bis hierher gefolgt seid, dann ist die Datensicherung eures vServers, auf die an euren Laptop angeschlossene USB-Festplatte, ein Kinderspiel.<br \/>\nIhr ben\u00f6tigt daf\u00fcr auf jeden Fall das Paket SSH, einen Account auf dem Server und <a href=\"https:\/\/www.gambaru.de\/blog\/2012\/03\/19\/ssh-schlussel-port-andern-und-anmeldung-als-root-verwehren\/\">SSH-Schl\u00fcssel<\/a>. Weiterhin gehe ich davon aus, dass ihr wie im alten Beitrag beschrieben den Port des SSH-Servers ge\u00e4ndert habt und Root sich nicht anmelden darf.<br \/>\nDiese Beschr\u00e4nkung heben wir nun wieder auf, da wir den kompletten vServer sichern wollen. Aber...Root darf nur ein einzelnes Kommando \u00fcber SSH ausf\u00fchren, den Rsync-Befehl, und sonst nichts.<\/p>\n<h3>Default.conf des Servers auf dem Backup-Rechner<\/h3>\n<pre class=\"brush:plain\">client: server\nrsh: ssh -p 44444 -i '\/root\/.ssh\/id_rsa'\ntree: \/\nxdev: 1\nindex: gzip\nlog: gzip\nimage-default: %Y%m%d\nexclude:\n        \/var\/cache\/apt\/archives\/*.deb\n        \/var\/cache\/man\/**\n        \/tmp\/**\n        \/var\/tmp\/**\n        *.bak<\/pre>\n<p>Der entscheidende Unterschied zu der lokalen Sicherung der Daten des Laptops ist der ge\u00e4nderte Wert f\u00fcr client: und die Variable rsh. Am besten tragt ihr in <em>\/etc\/hosts<\/em> einen Alias f\u00fcr eure Server-IP ein und nennt diesen dann schlicht server.<br \/>\nDer Wert f\u00fcr rsh (remote shell) ist der SSH-Befehl, um sich mit einem SSH-Server und dem SSH-Schl\u00fcssel zu verbinden, der auf einem Nicht-Standardport Anfragen entgegennimmt.<\/p>\n<h3>Auf dem Server<\/h3>\n<p>In der Datei <em>\/etc\/ssh\/sshd_config<\/em> den Wert f\u00fcr <strong>PermitRootLogin<\/strong> auf <em>forced-commands-only setzen<\/em>.<br \/>\nDanach noch dem \u00f6ffentlichen SSH-Schl\u00fcssel in <em>\/root\/.ssh\/authorized_keys<\/em> eine Bedingung voranstellen, die erf\u00fcllt sein muss, damit sich Root anmelden darf. (vor ssh-rsa schreiben)<\/p>\n<pre>command=\"rsync --server --sender -vlHogDtprxe.iLsf --numeric-ids . \/\",from=\"10.0.0.5\",no-port-forwarding,no-X11-forwarding,no-agent-forwarding<\/pre>\n<p>Mit from= l\u00e4sst sich sogar die IP-Adresse einschr\u00e4nken, von der sich Root anmelden darf. Der Befehl selbst l\u00e4sst sich leicht mit htop auf dem Server herausfinden, wenn man ein Dirvish-Backup beobachtet oder man macht es wie Thor Dreier mit einem Hilfsskript, von dem auch <a href=\"http:\/\/apt-get.dk\/howto\/backup\/\">dieser exzellente Dirvish-Tipp<\/a> stammt. Sein Artikel aus dem Jahr 2005 ist auf jeden Fall empfehlenswert.<\/p>\n<h2>Fazit<\/h2>\n<p>Dirvish ist eine alte, aber noch lange nicht ergraute L\u00f6sung zum Sichern von Daten. Mit Hilfe auch gerne <a href=\"https:\/\/www.gambaru.de\/blog\/hardware\/\">etwas \u00e4lterer Hardware<\/a>, habt ihr im Handumdrehen eine Backup-L\u00f6sung f\u00fcr alle Rechner zu Hause und f\u00fcr das Rechenzentrum in Schweden. \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>An mehreren Stellen habe ich hier schon meine ganz pers\u00f6nlichen Backup-Methoden vorgestellt. Keep it simple Partimage Partclone The Debian Way Apt-Clone Live-CDs (z.B. Clonezilla) Die Reihe k\u00f6nnte man noch eine Weile mit weiteren guten Alternativen fortf\u00fchren. Oft kombiniere ich auch die ein oder andere Variante, wenn mir Daten besonders wichtig sind. In den vergangenen Wochen &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/gambaru.de\/blog\/2012\/08\/29\/backup-leicht-gemacht-lokale-und-entfernte-sicherung-mit-dirvish-rsync-und-ssh\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eBackup leicht gemacht: Lokale und entfernte Sicherung mit Dirvish, Rsync und SSH\u201c<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[28,53,60,168,184,202,204],"_links":{"self":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/9034"}],"collection":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/comments?post=9034"}],"version-history":[{"count":1,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/9034\/revisions"}],"predecessor-version":[{"id":11094,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/9034\/revisions\/11094"}],"wp:attachment":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/media?parent=9034"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/categories?post=9034"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/tags?post=9034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}