<?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>Lars Schenk &#187; s3sync</title>
	<atom:link href="http://lars-schenk.com/tag/s3sync/feed" rel="self" type="application/rss+xml" />
	<link>http://lars-schenk.com</link>
	<description>IT-Services :: Software-Development since 1980 :: Freelancer since 1988</description>
	<lastBuildDate>Thu, 06 Oct 2011 02:44:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Automatisierte Backups nach Amazon S3 mit s3sync</title>
		<link>http://lars-schenk.com/automatisierte-backups-nach-amazon-s3-mit-s3sync/137</link>
		<comments>http://lars-schenk.com/automatisierte-backups-nach-amazon-s3-mit-s3sync/137#comments</comments>
		<pubDate>Tue, 28 Aug 2007 10:14:44 +0000</pubDate>
		<dc:creator>Lars Schenk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[tech-recipes]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[s3sync]]></category>

		<guid isPermaLink="false">http://lars-schenk.com/automatisierte-backups-nach-amazon-s3-mit-s3sync/137</guid>
		<description><![CDATA[Um meine Daten nach Amazon S3 zu sichern, habe ich mich unter der vielzahl verfügbarer Tools für S3Sync entschieden. Da dieses in ruby geschriebene Tools sich an rsync anlehnt und es auch unter Amazon EC2 wertvolle Dienste erbringt um das flüchtige Filesystem der virtuellen Server persistent zu halten, ist es für mich die erste Wahl. [...]]]></description>
			<content:encoded><![CDATA[<p>Um meine Daten nach <a href="http://www.amazon.com/s3/">Amazon S3</a> zu sichern, habe ich mich unter der <a href="http://elastic8.com/blog/tools_for_accessing_using_to_backup_your_data_to_and_from_s3.html">vielzahl verfügbarer Tools</a> für <a href="http://s3.amazonaws.com/ServEdge_pub/s3sync/README.txt">S3Sync</a> entschieden. Da dieses in <a href="http://www.ruby-lang.org">ruby</a> geschriebene Tools sich an <a href="http://samba.anu.edu.au/rsync/">rsync</a> anlehnt und es auch unter Amazon <a href="http://aws.amazon.com/ec2/">EC2</a> wertvolle Dienste erbringt um das flüchtige Filesystem der virtuellen Server persistent zu halten, ist es für mich die erste Wahl.</p>
<p>Auf einer Debian (oder auch Ubuntu) basierten Linux Distribution erfolgt die Installation mit: <span id="more-137"></span></p>
<div class="igBar"><span id="lcode-2"><a href="#" onclick="javascript:showPlainTxt('code-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-2">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># Ruby <span style="color:#006600; font-weight:bold;">&#40;</span>&gt;=<span style="color:#800000;color:#800000;">1</span>.<span style="color:#800000;color:#800000;">8</span>.<span style="color:#800000;color:#800000;">4</span><span style="color:#006600; font-weight:bold;">&#41;</span> und die OpenSSL ruby library werden benötigt</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$ sudo apt-get install ruby libopenssl-ruby</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># In das Verzeichnis in das s3sync installiert werden soll</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$ cd /home/user/</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># s3sync downloaden und entpacken</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$ wget http:<span style="color:#FF9933; font-style:italic;">//s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$ tar xvzf s3sync.<span style="">tar</span>.<span style="">gz</span>; rm s3sync.<span style="">tar</span>.<span style="">gz</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># das s3config.<span style="">yml</span> mit Umgebungsvariablen füllen</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">cp s3config.<span style="">yml</span>.<span style="">example</span> s3config.<span style="">yml</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># Das yml nur für den Owner lesbar machen</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">chmod <span style="color:#800000;color:#800000;">600</span> s3config.<span style="">yml</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">vi s3config.<span style="">yml</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># aws_access_key_id: <span style="color:#800000;color:#800000;">11111111111111111111111</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># aws_secret_access_key: <span style="color:#800000;color:#800000;">222222222222222222222</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># ssl_cert_file: /home/user/s3sync/my_ssl_cert</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># <span style="color:#006600; font-weight:bold;">&#40;</span>hier nun die eigenen AWS Daten eintragen<span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Das Verwenden der yml Datei wurde erst in einer späten Version von s3sync hinzugefügt. Es erspart das Setzen der Umgebungsvariablen bevor das s3sync Script aufgerufen wird.</p>
<p>Ein Beispiel für ein SSL_CERT_FILE wird im <a href="http://s3.amazonaws.com/ServEdge_pub/s3sync/README.txt">Readme</a> von s3sync gegeben.</p>
<p>Besitzer, Gruppe und Rechte bleiben mit s3sync erhalten. Leider gehen mir aber die Timestamps verloren.</p>
<p>Weiterführende Dokumentation gibt es <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=931&#038;categoryID=100">hier</a>. In diesem Beispiel wird auch gezeigt wie man s3sync auf einer ec2 Instanz einsetzt.</p>
<p>Jeder Benutzer kann bis zu 100 Buckets erstellen. Da die Buckets bei öffentlichen Dateien als Teil der URL erscheinen sollte man sich hier sprechende und kurze Namen überlegen (sofern diese noch frei sind). Jedes Bucket kann man wie ein logisches Laufwerk betrachten. Daher ist es auch möglich in unterschiedlichen Buckets unterschiedliche Inhalte/Strukturen zu verwenden. Es spricht also nichts dagegen mit einem S3 Benutzerkonto <a href="http://">JungleDisk</a> oder andere S3 basierte Tools und S3Sync parallel in getrennten Buckets zu verwenden.</p>
<p>Während der Evaluierungsphase habe ich neben s3cmd.rb auch <a href="http://www.rjonna.com/ext/s3fox.php">S3Fox</a> verwendet um den Inhalt meiner mit s3sync.rb gefüllten Buckets zu kontrollieren. Wie auch bei rsync schätze ich den Vorteil, dass ich die erstellten Backups - anders als bei tar oder Duplicity - direkt betrachten, kontrollieren und nutzen kann. Da jede Datei in einem Key/Blob abgelegt wird, kann man leicht einzelne Dateien restaurieren oder über die S3 ACL öffentlich zugänglich machen. Leider hat S3Fox Probleme die von s3sync gefüllten Buckets darzustellen. Im s3sync Readme (Changelog) gibt der Autor dazu folgenden Hinweis:</p>
<blockquote><p>
In the case of commands of the form:<br />
	s3sync -r somedir somebucket:<br />
The root directory node in s3 was being stored as "somedir/" instead of "somedir"<br />
which caused restores to mess up when you say:<br />
	s3sync -r somebucket: restoredir<br />
The fix to this, by coincidence, actually makes s3fox work even *less* well with<br />
s3sync.  I really need to build my own xul+javascript s3 GUI some day.
</p></blockquote>
<p>Anstatt von S3Fox nutze ich nun den <a href="http://people.no-distance.net/ol/software/s3/">Mac OS X S3 Browser</a>. </p>
<p>Alternativen zu S3Sync?<br />
Für umfangreichere Backups mag der s3sync Ansatz weniger geeignet sein, denn aufgrund der Architektur von S3 muss s3sync für jede Datei einen Request an S3 senden, was viel Bandbreite und Zeit verbrauchen kann.</p>
<p>Aus diesem Grund wäre eigentlich <a href="http://duplicity.nongnu.org/">Duplicity</a> die bessere Wahl um umfangreiche Datenmengen bzw. viele Dateien auf S3 zu sichern. Duplicity verfolgt einen ganz anderen Ansatz und ist damit in der Lage sehr bandbreitenschonend Backups zu erstellen. Seit der Version 0.4.3.RC9 (2007/07/09) unterstützt Duplicity auch S3 nativ als Backend.<br />
Für mein Vorhaben ist Duplicity jedoch weniger geeigent, da die gesicherten Dateien nicht mehr im "direkten" Zugriff in S3 verfügbar sind sondern in encrypted und signierten Archiven abgelegt werden. Da inkrementell gesichert wird, wird der erforderliche Speicherplatz immer größer da Archive nicht gelöscht werden können solange nicht eine erneute Vollständige Sicherung gemacht wird. Eine vollständige Sicherung auf S3 verbraucht jedoch wieder enorme Bandbreite / Traffic und Zeit. Und immer nur inkrementell zu sichern erscheint mir auch nicht ratsam.</p>
<p>Bestrebungen S3 über ein Filesystem nutzbar zu machen (S3/Fuse, JungleDisk u.a.) um dieses dann per rsync nutzen zu können erscheinen mir aber auch nicht vielversprechend, da die S3 API nur sehr grundlegende Funktionen bereitstellt (z.b. kein Seek in einem Blob; ändert sich ein Blob, so muss er komplett neu hochgeladen werden), so dass die Vorteile von rsync hier nicht ausgespielt werden können.</p>
<p>Allerdings wäre S3/fuse natürlich eine KillerApp. Insbesondere auch für EC2 um so ein persistentes Filesystem zu erhalten.</p>
]]></content:encoded>
			<wfw:commentRss>http://lars-schenk.com/automatisierte-backups-nach-amazon-s3-mit-s3sync/137/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

