<?php
	include_once($_SERVER['DOCUMENT_ROOT'].'/daten/php/startup.php');
	
	$pagetitle = 'SyncTool - Ein Programm zum Synchronisieren von Verzeichnissen';
	$breadcrumb = '';
	$keywords = 'Java, Synchronisierung, Backup';
//	$description = '';
	include_once($_SERVER['DOCUMENT_ROOT'].'/daten/php/pageheader.php');
?>
		
<div class="content">

<div style="float: right; font-size: small;">
	<a href="index.en.php">English</a>
</div>

<h1>SyncTool</h1>
<p>
Dieses Programm synchronisiert zwei Verzeichnisse. Dabei werden die Dateien anhand ihrer Größe und des Änderungsdatums verglichen, optional kann eine Hashsumme des Inhalts mit einbezogen werden.
Die Zielsetzung während der Entwicklung war eine Optimierung für große Verzeichnisbäume in Remote-Dateisystemen.
Eine ausführliche Beschreibung der Beweggründe zur Entwicklung des Programms inklusive eines Vergleichs mit anderen Tools findet sich im <a href="http://siarp.de/node/231">(englischen) Blog-Artikel</a>.
</p>
	
<h2>Features</h2>
<ul>
	<li>rekursiver Vergleich von Dateien anhand von Größe und Änderungsdatum</li>
	<li>optional können die Dateien anhand ihrer MD5-Hashes verglichen werden</li>
	<li>sämtliche Dateien werden bidirektional synchronisiert</li>
	<li>die Ausgabe kann zu Überwachungszwecken an einen Jabber-Account geschickt werden</li>
</ul>

<h2>Vorsicht, bitte!</h2>
<p>
Die Software wurde für unbeaufsichtigte Stapelverarbeitung entwickelt, deshalb gibt es keine spezielle Behandlung von kollidierenden Dateiänderungen.
Falls eine Datei seit der letzten Synchronisierung auf beiden Seiten geändert wurde, überschreibt das Programm die ältere mit der neueren.
(Grundsätzlich könnte das Programm aber problemlos um eine entsprechende Funktion erweitert werden.
</p>
<p>
Erstellen Sie Sicherungskopien Ihrer Dateien vor dem Einsatz des Programms! Die Software wird kostenlos und ohne jegliche Gewährleistung und Garantie überlassen. Insbesondere wird weder Fehlerfreiheit, noch die Verwendbarkeit für einen bestimmten Zweck garantiert.
</p>

<h2>Systemvoraussetzungen</h2>
<p>
Das Programm benötigt ein installiertes Java Runtime Environment. Erfolgreich getestet unter Mac OS X (Intel) und Debian Lenny (ARM, Open JDK 6).
</p>

<h2>Benutzung</h2>
<p>
Verfügbare Parameter:
</p>
<pre>
Usage: java -jar synctool-1.0.8.jar &lt;source path&gt; &lt;destination path&gt; [(-f|--dbfile) &lt;database file&gt;] [(-l|--logfile) &lt;logfile&gt;] [(-j|--jabber) &lt;jabber address&gt;] [(-r|--server) &lt;jabber server&gt;] [(-u|--user) &lt;jabber user&gt;] [(-p|--password) &lt;jabber password&gt;] [-d|--dry-run] [-h|--hashing] [-i|--ignore-directory-attributes] [-s|--silent] [--debug] [-?|--help]

  &lt;source path&gt;
        das Quellverzeichnis

  &lt;destination path&gt;
        das Zielverzeichnis

  [(-f|--dbfile) &lt;database file&gt;]
        Pfad zur Datenbank. (Wird neu angelegt, sofern nicht vorhanden.) (default: synctool)

  [(-l|--logfile) &lt;logfile&gt;]
        Logdatei, in die sämtliche Programmausgaben geschrieben werden

  [(-j|--jabber) &lt;jabber address&gt;]
        sendet sämtliche Ausgaben an den angegebenen Jabber-Benutzer

  [(-r|--server) &lt;jabber server&gt;]
        Jabber Server

  [(-u|--user) &lt;jabber user&gt;]
        Jabber Benutzername

  [(-p|--password) &lt;jabber password&gt;]
        Jabber Passwort

  [-d|--dry-run]
        führt einen Testlauf ohne Änderungen am Dateisystem durch

  [-h|--hashing]
        zusätzlich MD5-Hashsummen der Dateien berechnen und vergleichen

  [-i|--ignore-directory-attributes]
        Attribute von Verzeichnissen, die auf beiden Seiten existieren werden nicht angeglichen

  [-s|--silent]
        verzichtet auf Ausgabe der Meldugen "Entering directory" and "No operation for file"

  [--debug]
        Debugging-Informationen ausgeben

  [-?|--help]
        Hilfe ausgeben und das Programm beenden 
</pre>
<p>
Beispiel:
</p>
<pre>
java -jar synctool.jar -i -s -l sychronization.log /media/hidrive /media/usb/localdrive
</pre>
	
<h2>Download</h2>
	<p>
		SyncTool wird unter der <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a> zur Verfügung gestellt:
	</p>
<div style="background-color:#E0E0E0; padding: 4px; margin: 4ex; margin-left: 10ex; margin-right: 10ex;">
	<p>
		Copyright 2011 Tilman Walther
	</p>
	<p>
		Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.<br/>
		You may obtain a copy of the License at
	</p>
	<p style="margin-left:2em;">
		<a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>
	</p>
		Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 	</p>
</div>
	<p style="margin-top: 1em; text-align: center;">
		<span style="font-weight: bold;">Denken Sie unbedingt daran, Sicherungskopien Ihrer Dateien zu erstellen!</span>
	</p>
<div style="background-color:#E0E0E0; padding: 2ex; padding-bottom: 1ex; text-align: center; margin: 2ex; margin-left: 10ex; margin-right: 10ex;">
	<p style="font-size: 130%;">
		ausführbares Jarfile: <a href="synctool.jar">SyncTool 1.0.8</a>
	</p>
	<p>
		Programmquellen: <a href="synctool-project.zip">Eclipse-Projekt</a>
	</p>
</div>

<h2>Verwendete Programmbibliotheken</h2>
<p>
Die Software setzt die folgenden Komponenten ein:
</p>
<ul>
	<li>die Datenbank <a href="http://www.h2database.com">H2</a></li>
	<li><a href="http://logging.apache.org/log4j/">log4j</a></li>
	<li>die <a href="http://commons.apache.org/">Apache Commons</a> Bibliothek</li>
	<li><a href="http://martiansoftware.com/jsap/">JSAP</a> zum Parsen der Parameter</li>
	<li><a href="http://www.igniterealtime.org/projects/smack/">Smack</a> XMPP-Bibliothek zum Versenden der Jabber-Nachrichten</li>
</ul>
<p>
Die Entwicklung erfolgte mit Hilfe von <a href="http://www.eclipse.org">Eclipse</a>, <a href="http://maven.apache.org/">Maven</a> und <a href="http://m2eclipse.sonatype.org/">M2Eclipse</a>.
</p>


</div>

<?php
    include_once($_SERVER['DOCUMENT_ROOT'].'/daten/php/pagefooter.php');
?>
