Start > Algorithmik > Sync

Sync: Dateisynchronisierer in C

Sync, geschrieben in C, ist ein kleines Programm zur Synchronisation von Dateien mehrerer Computer mit einem zentralen Datenserver.

  1. Funktionsumfang
  2. Systemvoraussetzungen
  3. Installation
  4. Aufruf
  5. Format der Syncdatei
  6. Download
  7. Nutzung

Funktionsumfang

Sync synchronisiert Dateien zwischen Orten (Pfaden), überschreibt also ältere Versionen von Dateien am einen Ort mit neueren Versionen eines anderen Ortes.

Das Programm entstand aus der Notwendigkeit, Initialisierungs-Dateien eines Programmes, das auf mehreren Rechnern läuft, aktuell zu halten, obwohl die Dateien oft nicht auf einem Server liegen können und die hauseigenen Synchronisierungs­funktionen des Betriebssystems von Version zu Version differieren. PC 1 soll sich beim Start die neuesten Versionen bestimmter Dateien von einem Server oder einer zentralen Festplatte ziehen und ggf. nach Änderung vor dem Herunter­fahren wieder zurückspielen. Später startet PC 2 mit dem selben Vorgehen. Somit sollten alle PCs im Idealfall über die jeweils neuesten Daten verfügen.

Durch eine Syncdatei erfährt das Programm, welche Dateien zu aktualisieren sind. Diese Konfigurationsdatei enthält die Orte und Namen der zu synchronisierenden Dateien. Wird dem Programm keine Syncdatei auf der Kommandozeile mitgegeben, wird standardmäßig sync.cfg geladen. Um zu entscheiden, ob eine Dateienpaar zu synchronisieren ist, fragt das Programm die Zeit der letzten Änderung ab.

Systemvoraussetzungen

Benötigt wird das Betriebs­system Windows . Getestet wurden die Versionen XP-10.

Installation und Deinstallation

Weder Installation noch Deinstallation sind notwendig. Das Programm kann in ein beliebiges Verzeichnis kopiert werden.

Aufruf

Das Programm kann über Kommandozeile oder GUI aufgerufen werden. Ohne angegebenen Parameter sucht das Programm im aktuellen Verzeichnis nach der Syncdatei sync.cfg. Der Parameter /? druckt eine Hilfe:

Sync - Datei-Synchronisierung V 1.0.0.32.

Syntax: sync [/Optionen]

Optionen (Standardwerte):
  /?		Diese Hilfe
  /d<nn>	Tolerierte Zeitdifferenz in Sekunden,
  		ohne eine Synchronisation auszuloesen
  /l		Aktionen nur auflisten, nicht ausfuehren
  /y		Vor Ueberschreiben von Dateien fragen
  /g		Aktionen in Logdatei sync.log schreiben
  /c<dateiname>	Konfigurationsname (sync.cfg)
  /o<dateiname>	Logname (sync.log)

Siehe sync.txt fuer weitere Hilfe.

Der Parameter /l ist nützlich zum Testen, welche Dateien überschrieben würden. Er führt mit folgender Syncdatei:

; Mehrcomputerversion

[PC01]
c:\windows\system32\drivers\etc\      i:\tim\bck\
hosts
c:\programme\etc\
dr.txt
lst.htm
c:\programme\privoxy\i:\tim\bck\proxies\
usr.act

[PC-02]
c:\users\tim\appdata\privoxy\i:\tim\bck\proxies\
usr.act
...

auf PC01 z.B. zu folgender Ausgabe:

### Synchronisationstest vom 31.05.2016 15:50:43:

; Mehrcomputerversion

*** Sektion PC01
c:\windows\system32\drivers\etc\:i:\tim\bck\:
hosts (4,04 KiB, 05.05.2016 18:20:03) = hosts (4,04 KiB, 05.05.2016 18:20:03)
c:\programme\etc\:i:\tim\bck\:
dr.txt (3,74 KiB, 30.03.2016 20:30:56) = dr.txt (3,74 KiB, 30.03.2016 20:30:56)
lst.htm (4,1 KiB, 12.03.2016 11:53:13) = lst.htm (4,1 KiB, 12.03.2016 11:53:13)
c:\programme\privoxy\:i:\tim\bck\proxies\:
usr.act (1,1 KiB, 25.05.2016 11:42:00) > usr.act (1,2 KiB, 05.05.2016 18:22:53)

Synchronisationstest beendet. 0 Datei(en) aktualisiert, 0 Fehler.

Format der Syncdatei

Eine Syncdatei wird zeilenweise abgearbeitet. Leerzeilen und mit '#' eingeleitete Kommentarzeilen werden ignoriert. Sektionszeilen geben Sync an, für welchen Computer die nachfolgenden Zeilen gelten (z.B. [PC01]). Sync fragt beim Start den Namen des Computers ab, unter dem es läuft. Somit kann eine Syncdatei für mehrere Computer verwendet werden, auf denen sich ja zumeist die Pfade unterscheiden.

Verzeichniszeilen benennen die Verzeichnisse, Dateizeilen die Dateinamen. Jede dieser Zeilen besteht aus 2 Spalten, die durch Tabulator getrennt sind:

Links Ort 1, rechts Ort 2.

Die beispielhafte Syncdatei:

[PC01]

# Ort 1		Ort 2
# -----------------------
c:\dat\		d:\backup\
01.txt		01.txt
02.txt		02.txt
c:\dat\		e:\backup2\
03.txt		03.txt

mit zwei Verzeichnis- und drei Dateizeilen führt zu folgender Synchronisation:

c:\dat\01.txt <--> d:\backup\01.txt
c:\dat\02.txt <--> d:\backup\02.txt
c:\dat\03.txt <--> e:\backup2\03.txt

Es existiert eine Kurznotation:

  1. Fehlt ein Dateiname in Ort 2, wird der Dateiname aus Ort 1 übernommen.
  2. Ein Verzeichnisname in Ort 1 oder Ort 2 gilt, solange kein neuer Verzeichnisname für diesen Ort (diese Spalte) aufgeführt wird.

Somit kann obiges Beispiel auch so geschrieben werden:

[PC01]

# Ort 1		Ort 2
# -----------------------
c:\dat\		d:\backup\
01.txt
02.txt
       		e:\backup2\
03.txt

Anders formuliert: Verzeichnisnamen vererben sich spaltenweise hinunter, Dateinamen zeilenweise von links nach rechts.

Besteht an Ort 2 (rechts) noch keine entsprechende Datei, wird sie neu angelegt. An Ort 1 (links) wird hingegen nie eine Datei neu angelegt. Angegebene Verzeichnisse müssen bei der Synchronisation existieren, sie werden generell nicht angelegt.

Ein Löschen von Dateien oder Verzeichnissen erfolgt niemals. Platzhalter (z.B. *.txt, b?.log) können für Dateinamen in Ort 1 verwendet werden, wobei zu beachten ist, daß die Suche nach passenden Dateinamen nur an Ort 1 erfolgt, nicht an Ort 2.

Die beispielhafte Syncdatei:

c:\dat\		d:\backup\
*.log

mit 01.log und 02.log unter c:\dat\ und 01.log und 03.log unter d:\backup\ führt somit nur zwei Synchronisationen aus:

c:\dat\01.log <--> d:\backup\01.log
c:\dat\02.log <--> d:\backup\02.log (Neuanlage)

d:\backup\03.log hingegen wird ignoriert und führt nicht zur Anlage von c:\dat\03.log; die Notation ist also nicht spiegelsymmetrisch!

Es können Dateien mit unterschiedlichen Dateinamen synchronisiert werden, wie z.B. in:

c:\dat\		d:\backup\
typen in c.txt	CTYPES.TXT

Dateinamen mit Leerzeichen können, aber müssen nicht in Anführungszeichen gesetzt werden: Sync überliest Anführungszeichen.

Wurzelverzeichnisnamen müssen mit einem Backslash ('\') abgeschlossen werden.

Download

Quellen

Wer Sync selbst kompilieren will, benötigt die Quellen:

sync-src.zip [10 KB]

Ausführbare Kompilate

Wer Sync nicht kompilieren will, lädt das Kompilat als ZIP-Archiv:

Windows: sync32.zip [11 KB, 32 bit, MD5]
Windows: sync64.zip [13 KB, 64 bit, MD5]

Empfehlenswert ist anschließend die Prüfung auf Virusfreiheit und Authentizität.

Nutzung

Hinweise zur Nutzung.

© 2016, 2018 asdala.de: Kon­takt & Daten­obhut