<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Malte's Blog &#187; rsync</title>
	<atom:link href="http://www.maltesieb.de/tag/rsync/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.maltesieb.de</link>
	<description></description>
	<lastBuildDate>Fri, 06 Jan 2012 23:26:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Automatische Backup-Lösung mit rsync und SSH</title>
		<link>http://www.maltesieb.de/ubuntu/automatische-backup-losung-mit-rsync-und-ssh/</link>
		<comments>http://www.maltesieb.de/ubuntu/automatische-backup-losung-mit-rsync-und-ssh/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 21:40:15 +0000</pubDate>
		<dc:creator>Malte</dc:creator>
				<category><![CDATA[Linux/Ubuntu]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[cronjob]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.maltesieb.de/?p=52</guid>
		<description><![CDATA[Vielen Leuten gehts beim Backup so wie mir. Man weiß, dass ein Backup unverzichtbar ist, man hat sich vielleicht auch ein Script geschrieben, aber es mangelt an der Motivation dies durchzuführen oder an der Regelmäßigkeit.
Wer einen weiteren Fest-PC hat, der kann das Backup ganz automatisiert darüber ablaufen lassen. Bei mir läuft der HTPC immer und [...]]]></description>
			<content:encoded><![CDATA[<p>Vielen Leuten gehts beim Backup so wie mir. Man weiß, dass ein Backup unverzichtbar ist, man hat sich vielleicht auch ein Script geschrieben, aber es mangelt an der Motivation dies durchzuführen oder an der Regelmäßigkeit.</p>
<p>Wer einen weiteren Fest-PC hat, der kann das Backup ganz automatisiert darüber ablaufen lassen. Bei mir läuft der HTPC immer und da er sowieso schon Server-Dienste übernimmt, ist er nun auch zum Backup-Server befördert worden.</p>
<p>Stündlich lasse ich nun mein gesamtes /home-Verzeichnis per rsync in ein Backup-Verzeichnis auf dem HTPC updaten. Und falls der Laptop einmal nicht da oder nicht an ist, verabschiedet sich rsync mit einer einfachen Fehlermeldung und belässt das Backup unberührt.</p>
<p><span id="more-52"></span></p>
<h2>Einrichtung</h2>
<h3>Installation</h3>
<p>Auch wenn der HTPC in diesem Fall als Backup-&#8221;Server&#8221; zuständig ist, übernimmt er eigentlich eine Client-Funktion. Deshalb spreche ich ab sofort von <span style="color: #ff0000;">server</span> (eigentlich der Laptop) und <span style="color: #808000;">client</span> (der HTPC).</p>
<p>Damit überhaupt ein Zugriff erfolgen kann, muss auf dem server ein ssh-Server (Daemon) laufen. Dieser wird unter <strong>Ubuntu</strong> durch das Paket <strong>openssh-server</strong> zur Verfügung gestellt:</p>
<blockquote><p>user@<span style="color: #808000;">client</span>:~$ sudo apt-get install openssh-server</p></blockquote>
<p>In <strong>Arch Linux</strong> heißt es einfach nur <strong>openssh</strong>.</p>
<blockquote><p>user@<span style="color: #808000;">client</span>:~$ pacman -S openssh</p></blockquote>
<p>Zusätzlich muss der Daemon unter Arch Linux noch in die <strong>/etc/rc.conf</strong> unter DAEMONS eingetragen werden, damit er bei jedem Start mitgestartet wird.</p>
<p>Nun kann man sich vom <span style="color: #808000;">client</span> auf den <span style="color: #ff0000;">server</span> einloggen:</p>
<blockquote><p>user@<span style="color: #808000;">client</span>:~$ ssh user@<span style="color: #ff0000;">server</span></p></blockquote>
<p>Wobei für <span style="color: #ff0000;">server</span> der entsprechende Hostname bzw. IP eingesetzt wird und für user der User auf dem <span style="color: #ff0000;">server</span>, dessen Dateien gesichert werden sollen. Es wird eine Passwort-Abfrage kommen, wo das Passwort des entsprechenden users auf dem <span style="color: #ff0000;">server</span> eingegeben wird.</p>
<p>Falls das klappt, kann man die Sitzung mit &#8220;exit&#8221; verlassen, da wir zunächst ein paar Aufgaben auf dem <span style="color: #808000;">client</span> erledigen müssen.</p>
<h3>Authentifizierung</h3>
<p>Da unser Cronjob später nicht auf die Passwort-Abfrage reagieren kann, umgehen wir diese, indem wir ein Keyfile generieren:</p>
<blockquote><p>user@<span style="color: #808000;">client</span>:~$ ssh-keygen -t dsa -f ~/.ssh/backup_key</p></blockquote>
<p>Die passphrase wird leer gelassen, damit es später zu keiner Passwort-Abfrage kommt.</p>
<p>Das Programm sollte nun in ~/.ssh/ ein privates und ein öffentliches Keyfile (erkennbar an der .pub-Endung) angelegt haben.</p>
<p><strong>Hinweis</strong>: Eine leere passphrase stellt ein Sicherheitsrisiko dar. Wer in die Hände des Keyfiles kommt, kann Zugriff zum <span style="color: #ff0000;">server</span> erlangen. Diese Methode sollte deshalb nur im lokalen Netzwerk verwendet werden.</p>
<p>Damit die Authentifizierung zwischen <span style="color: #808000;">client</span> und <span style="color: #ff0000;">server</span> funktioniert, muss das Keyfile auf den <span style="color: #ff0000;">server</span> übertragen werden:</p>
<blockquote><p>user@<span style="color: #808000;">client</span>:~$ ssh-copy-id -i ~/.ssh/backup_key.pub user@<span style="color: #ff0000;">server</span></p></blockquote>
<p>Auch hier wird <span style="color: #ff0000;">server</span> und user wieder entsprechend angepasst.</p>
<p>Wir werden aufgefordert, den Zugang zu prüfen. Das machen wir folgendermaßen:</p>
<blockquote><p>user@<span style="color: #808000;">client</span>:~$ ssh -i ~/.ssh/backup_key user@<span style="color: #ff0000;">server</span></p></blockquote>
<p>Falls <strong>nicht</strong> nach einem Passwort gefragt wurde, hat alles geklappt. Die Sitzung verlassen wir wieder mit &#8220;exit&#8221;.</p>
<p>Hier legen wir nun ein Verzeichnis an, in welches die Dateien gesichert werden sollen, z.B.:</p>
<blockquote><p>user@<span style="color: #808000;">client</span>:~$ mkdir ~/backup</p></blockquote>
<h3>Synchronisation</h3>
<p>Ab sofort sollte ein erstes Synchronisieren der Daten möglich sein:</p>
<blockquote><p>user@<span style="color: #808000;">client</span>:~$ /usr/bin/rsync &#8211;delete -avze &quot;ssh -i /home/user/.ssh/backup_key&quot; user@<span style="color: #ff0000;">server</span>:/home/user ~/backup</p></blockquote>
<p>Ein Paar Worte zum Befehl:</p>
<p><strong>&#8211;delete</strong> sorgt dafür, dass Dateien , die am Quellort gelöscht wurden, auch am Zielort gelöscht werden<br />
<strong>-a</strong> ist der Archiv-Modus, d.h. er behält alle Permissions, Symlinks, Zeiten, Besitzer und Gruppen bei<br />
<strong>-v</strong> zeigt alle Dateien an, die übertragen werden.<br />
<strong>-z</strong> überträgt die Dateien komprimiert<br />
<strong>-e</strong> nutzen wir in diesem Fall, um die Übertragung über SSH laufen zu lassen.</p>
<p>user ist für die <span style="color: #808000;">client</span>- und <span style="color: #ff0000;">server</span>-Seite entsprechend anzupassen. Der Pfad hinter -i ist auf die <span style="color: #808000;">client</span>-Seite bezogen.</p>
<p>Der Pfad hinter user@<span style="color: #ff0000;">server</span>: ist der Remote Path, also der Pfad zu den zu sichernden Dateien auf dem <span style="color: #ff0000;">server</span>.</p>
<p>Die Ausführung kann eine ganze Zeit dauern, da beim ersten Aufruf noch alle Dateien übertragen werden müssen. Jeder folgende Aufruf vergleicht die Daten und überträgt nur die Veränderungen.</p>
<p>Hat das erfolgreich geklappt, kann ein Script geschrieben werden, wo wir den obigen Befehl eintragen:</p>
<blockquote><p>#!/bin/bash<br />
/usr/bin/rsync &#8211;delete -avze &quot;ssh -i /home/user/.ssh/backup_key&quot; user@<span style="color: #ff0000;">server</span>:/home/user ~/backup</p></blockquote>
<p>Ich habe die Datei als /usr/bin/backup angelegt und mit</p>
<blockquote><p>sudo chmod a+x /usr/bin/backup</p></blockquote>
<p>ausführbar gemacht.</p>
<p>Ab sofort sollte der Aufruf von &#8220;backup&#8221; in der Konsole ausreichen.</p>
<h3>Automatisierung</h3>
<p>Fehlt nur noch ein Eintrag in der crontab, damit das Backup stündlich ausgeführt wird:</p>
<blockquote><p>crontab -e</p></blockquote>
<p>Folgende Zeile einfügen:</p>
<blockquote><p>01 * * * * /usr/bin/backup</p></blockquote>
<p>Die Zeit kann natürlich angepasst werden. In den meisten Fällen sollte auch ein tägliches Backup um 11:59 Uhr ausreichen:</p>
<blockquote><p>59 11 * * * /usr/bin/backup</p></blockquote>
<p>Schaut regelmäßig in /var/mail/user (user ist durch euren Benutzernamen zu ersetzen), ob Probleme aufgetreten sind.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maltesieb.de/ubuntu/automatische-backup-losung-mit-rsync-und-ssh/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

