s3dirsync
Kurzbeschreibung
s3dirsync ist ein Kommandozeilenprogramm mit dem Sie lokale Verzeichnisse auf Amazon's Simple Storage Service (S3) hochladen
und in beiden Richtungen synchronisieren koennen.
s3dirsync ist in Java geschrieben und duerfte auf allen Plattformen mit Java Standard Edition laufen (getestet unter Windows und Linux). Es wird lediglich installierte Java Laufzeitumgebung (JRE) ab Version 5 (1.5) benoetigt.
Die verwendete Kombination aus S3 und Java bietet sehr hohe Datensicherheit und Verfuegbarkeit fuer Ihre Daten.
s3dirsync ist unter Apache Lizenz als Open Source freigegeben.
Funktionsumfang
- Verzeichnisse in 'snapshot' Modus hoch und runterladen
- Verzeichnisse in 'update' Modus synchronisieren (hoch und runter)
- Verzeichnisse auf dem Server loeschen
- Verzeichnisse auf dem Server auflisten
- Info zu verbrauchten Speicherplatz und abgelegten Verzeichnissen
- S3 Buckets auflisten
- S3 Buckets loeschen
Sicherheit
- Gesamte Datenuebertragug ueber Internet von/zu Amazon S3 Servern wird duch SSL geschuetzt
- Integritaet der uebertragenen verschluesselten Daten wird mit einem MD5 Hash serverseitig geprueft
- Es werden ALLE Daten verschluesselt auf dem S3 Server abgelegt inklusive Dateinamen und Index-Dateien
- Primaere 256 Bit Schluessel wird aus Passworteingabe gemaess dem Standard "PKCS 5 V2.0 Scheme 2" generiert. Mit diesem Schlussel wird Index-Datei verschluesselt die wiederum sekundaeren 256 Bit Schluessel fuer eigentliche Datenverschluesselung enthaelt. Sekundaerer Schluessel wird mit Hilfe eines Zufallszahlgenerator einmalig generiert.
-
Als Verschluesselungsalgorithmus wird Serpent Cipher verwendet. Serpent ist einer der 5 AES Finalisten und ist laut Cryptoexerten sicherer als AES Finalist Rindajel.
- Daten werden in EAX Modus mit eingebauter Intergrationspruefung verschluesselt.
Als Backend fuer cryptographische Operationen dient sehr gute Bibliothek von bouncycastle.org
Verwendung
Um s3dirsync benutzen zu koennen brauchen Sie einen Account bei Amazon Webservices. Wenn Sie schon ein Kunde von Amazon sind, dann ist es sehr schnell und leicht einzurichten. Dazu gehen Sie auf die S3 Webseite und folgen Sie den Anweisungen (auf Englisch).
Falls sie noch keine JRE auf Ihrem System installiert haben, ist es ein guter Zeitpunkt dies zu tun - nicht nur wegen s3dirsync. Um zu testen ob Java installiert ist tippen sie in der Kommandozeile 'java -version'. Das Resultat soll circa so aussehen
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Server VM (build 10.0-b22, mixed mode)
Um s3dirsync zu starten gehen Sie in den Verzeichnis mit s3dirsync.jar Datei und tippen sie in der Kommandozeile 'java -jar s3dirsync.jar'. Als Resultat werden sie Uebersicht ueber verfugbare Optionen und Befehle erhalten.
Funktionsprinzipien
Alle Benutzerdaten in S3 werden in Gruppen (Buckets) mit global unique Namen aufgeteilt. Ein Benutzer kann nur eine bestimmte maximale Anzahl der Buckets anlegen - z.Z. 100 Stueck. s3dirsync braucht fuer Betrieb eigenes nur fuer ihn reserviertes Bucket. Ich wuerde dringend abraten dieses Bucket parallel auch fuer irgendwelche andere Zwecke zu benutzen. Man kann s3dirsync mit einem bereits bestehendem Bucket benutzen oder falls kein spezifiziert ist wird automatisch ein Bucket mit hoffentlich unique Namen erstellt. Denn in S3 System wenn schon ein Bucket mit gleichen Namen von anderem Benutzer erstellt wurde haben Sie Pech gehabt und muessen anderen Bucketnamen ausdenken.
Innerhalb eines Buckets koennen Sie Ihre Daten in Verzeichnissen ordnen. Serverseitiger Verzeichnis ist das Gegenstueck fuer ihren lokalen Verzeichnis. Lokale und serverseitige Verzeichnisse muessen nicht gleich heissen. Dateien in serverseitigen Verzeichnis werden mit ihrem relativen Pfad zum lokalen Verzeichnis als Basis gespeichert. D.h. wenn lokaler Verzeichnis '/home/user/lok' heisst und serverseitiger Verzeichnis 'rem' dann werden bei einem '-snapshot up' Befehl alle Dateien aus '/home/user/lok' in serverseitigen Verzeichnis 'rem' mit ihren relativen Pfaden gespeichert ohne '/home/user/lok/' vornedran.
Programmargumente sind in zwei Gruppen geteilt: Optionen und Befehle. Optionen enthalten Informationen die zum Ausfuehren der Befehle benoetigt werden.
Wichtigste Befehle
- -listBuckets: Listet erstellte Buckets des Benutzers
- -summary: Gibt Uebersicht ueber angelegte Verzeichnisse in einem Bucket und deren Speicherverbrauch
- -listDir: Listet in einem serverseitigen Verzeichnis vorhandene Dateien auf
- -deleteBucket: loescht kompletten Bucket samt aller eventuell vorhandenen Verzeichnissen
- -deleteDir: loescht einen Verzeichnis in Bucket
- -update <up|down>: synchronisiert Daten zwischen lokalen und serverseitigen Verzeichnis. 'update' Befehl ist undestruktiv und wirkt additiv. D.h. bei Synchronisierung werden keine Dateien geloescht sondern nur geaenderte Ueberschrieben und neue hinzugefuegt. Eine aus Quellverzeichnis entfernte Dateie wird damit nicht auch in Zielverzeichnis entfernt, falls sie dort schon vorhanden ist.
- -snapshot <up|down>: erstellt exakten Abbild von einem Verzeichnis. Genau wie mit 'update' Befehl werden nur geaederte oder neue Daten uebertragen. Zusaetzlich dazu werden in Quellverzeichnis entfernte Dateien auch in Zielverzeichnis geloscht
- -changePassword <passwort>: aendert das Verschluesselungspasswort
- -cleanup: Loescht verwaiste Datenobjekte auf dem Server.
Wichtigste Optionen
- -s3Key: Ihr Identifikationscode fuer S3 System
- -s3Secret: Ihr Zugriffcode fuer S3 System. Immer schoen vor fremden Augen schuetzen
- -password: Verschluesselungspasswort fuer Nutzdaten
- -bucket: Name des Buckets das genutzt werden soll. Wenn '-bucket' Option nicht vorhanden ist, dann wird automatisch einen Bucket angelegt.
- -remoteDir: Name des serverseitigen Verzeichnisses von wo oder wochin die Daten gelesen oder geschrieben werden
- -localDir: Name des lokalen Verzeichnisses von wo oder wochin die Daten gelesen oder geschrieben werden
- -include: Dateipatterns mit '*' und '?'. Es werden nur Dateien in update/snapshot Operationen inkludiert, die diesem Muster entsprechen. Mehrere Muster koennen durch Komma getrennt angegeben werden. Z.b.: '*.java' bedeuted, dass nur Dateien mit Endung '.java' beruecksichtigt werden. Ohne '-include' Option werden alle Dateien auf dem lokalen oder entfernten Verzeichnis beruecksichtigt. Zeichen '*' steht fuer keine oder mehrere Zeichen. '?' steht fuer genau ein beliebiges Zeichen
- -exclude: Dateipatterns mit '*' und '?'. Bestimmt welche Dateien aus Operation ausgenommen werden sollen. Z.b. 'temp/*.java' bedeuted: Dateien mit Endung '.java' aus Verzeichnis 'temp' sollen ignoriert werden. Zeichen '*' steht fuer keine oder mehrere Zeichen. '?' steht fuer genau ein beliebiges Zeichen