Dir Sync bl IconDir Sync bl  v2.1.2

Portable Windows Ordner-Synchronisation  ·  Autor: Bernhard Lickert  ·  Entwickelt mit Claude (Anthropic)

Schnellstart

Es gibt zwei Wege, Dir Sync bl zu starten. Normaler Start ist die eigenständige DirSyncBL.exe — kein Python auf dem Zielsystem nötig, kein Konsolenfenster, startet und beendet sich am schnellsten und zuverlässigsten. Der Start über den Python-Quellcode (start.bat) ist die Alternative für Entwicklung oder wenn kein Build-Schritt gewünscht ist.

Normaler Start — DirSyncBL.exe empfohlen

  1. Einmalig: EXE bauen
    build_exe.bat per Doppelklick starten (benötigt einmalig Python 3.10+, siehe Systemvoraussetzungen). Installiert automatisch alle Abhängigkeiten sowie PyInstaller und erzeugt dist\DirSyncBL.exe. Dauert 1–3 Minuten.
  2. dist\DirSyncBL.exe per Doppelklick starten
    Ab jetzt reicht das — auf diesem PC und jedem anderen Windows-PC, auch ganz ohne installiertes Python. Kein Konsolenfenster, kein Bootstrap-Schritt, sauberes Beenden.
  3. Quell- und Zielordner wählen, synchronisieren
    Ordner über die 📁-Schaltfläche auswählen oder per Drag & Drop in die Felder ziehen, dann „⟳ Synchronisieren" klicken.
💡 Portabel weitergeben Der Ordner dist\ (enthält DirSyncBL.exe) kann komplett auf einen USB-Stick, eine externe Festplatte oder einen anderen Windows-PC kopiert werden — dort läuft das Programm sofort, ganz ohne weitere Installation.

Alternative: direkt aus dem Python-Quellcode

Für Entwicklung oder wenn kein Build-Schritt gewünscht ist, lässt sich das Programm auch ohne vorherigen Build direkt aus dem mitgelieferten Quellcode starten — dafür mit einmaliger automatischer Paketinstallation beim allerersten Start.

  1. Python installieren (einmalig, falls noch nicht vorhanden)
    https://www.python.org/downloads/ — Python 3.10 oder neuer herunterladen und installieren.
    ⚠ Wichtig: Beim Installer den Haken bei „Add Python to PATH" setzen!
  2. start.bat per Doppelklick starten
    Beim allerersten Start erscheint ein kleines Einrichtungsfenster: Das Programm legt automatisch eine lokale Python-Umgebung (venv) an und installiert alle benötigten Pakete. Eine Internetverbindung ist dazu erforderlich.
    Ab dem zweiten Start entfällt dieser Schritt vollständig.
  3. Quell- und Zielordner wählen, synchronisieren
    Ordner über die 📁-Schaltfläche auswählen oder per Drag & Drop in die Felder ziehen, dann „⟳ Synchronisieren" klicken.
💡 setup.bat Die Datei setup.bat ist ab v1.4.0 optional und dient nur noch als manueller Fallback für den Python-Quellcode-Weg — z. B. wenn beim ersten Programmstart keine Internetverbindung vorhanden war.

Systemvoraussetzungen

AnforderungDetails
BetriebssystemWindows 10 / 11 (64-Bit)
Python3.10 oder neuer (von python.org) — nur einmalig zum Bauen der EXE bzw. für den Python-Quellcode-Weg nötig, nicht mehr auf PCs, die nur die fertige DirSyncBL.exe ausführen
InternetNur beim EXE-Bauen bzw. beim allerersten Start über start.bat für die Paket-Installation
Speicherplatzca. 80 MB für venv + Pakete (Python-Quellcode-Weg) bzw. ca. 30 MB für dist\DirSyncBL.exe

Automatisch installierte Pakete

PaketFunktionOhne Paket
watchdogAuto-Monitor (Ordner-Überwachung)Auto-Monitor deaktiviert
PillowProgramm-Icon erzeugenKein Icon in Titelleiste
psutilSpeicherplatz-PrüfungKeine Speicheranzeige
sv-ttkModernes Oberflächen-ThemeKlassisches Tk-Erscheinungsbild (voll funktionsfähig)
pystraySystray-Symbol beim Minimieren NEU v2.1.0Checkbox „In den Systray minimieren" deaktiviert/ausgegraut
tkinterdnd2Drag & Drop für OrdnerpfadeNur manuelle Eingabe

Ordnerstruktur

DirSyncBL/
├── DirSyncBL.py          Hauptprogramm (mit Konsolenfenster)
├── DirSyncBL.pyw         Hauptprogramm (kein Konsolenfenster) ← wird von start.bat genutzt
├── build_exe.bat         Baut dist\DirSyncBL.exe (normaler Start, einmalig ausführen)
├── DirSyncBL.spec        PyInstaller-Bauplan für build_exe.bat
├── start.bat             Programm aus dem Quellcode starten (Alternative, Doppelklick)
├── setup.bat             Manuelle Erstinstallation für den Quellcode-Weg (optional)
├── requirements.txt      Paketliste
├── icon.ico              Programm-Icon (wird beim ersten Start erzeugt)
├── README.md             Kurzanleitung
├── data/
│   ├── config.json       Alle Einstellungen (automatisch gespeichert)
│   └── sync.log          Vollständiges Protokoll aller Aktionen
├── venv/                 Lokale Python-Umgebung (nur Quellcode-Weg, nach erstem Start)
└── dist/
    └── DirSyncBL.exe     Eigenständige EXE (normaler Start, nach build_exe.bat)
✔ Vollständig portabel Sowohl der gesamte DirSyncBL-Ordner (Quellcode-Weg) als auch allein der Ordner dist\ mit DirSyncBL.exe können auf einen USB-Stick oder eine externe Festplatte kopiert werden. Für die EXE muss auf dem Zielsystem kein Python installiert sein; für den Quellcode-Weg (start.bat) einmalig schon — danach richtet sich das Programm selbst ein.

Ordnerauswahl

Im oberen Bereich des Fensters befinden sich zwei Eingabefelder für Quelle (der Ordner, aus dem synchronisiert wird) und Ziel (der Ordner, in den synchronisiert wird).

Möglichkeiten zur Auswahl

Der zuletzt verwendete Pfad wird beim Beenden automatisch gespeichert und beim nächsten Start wiederhergestellt.

💡 Zielordner anlegen Existiert der Zielordner noch nicht, fragt das Programm nach dem Klick auf „Synchronisieren", ob er angelegt werden soll.

Synchronisierungs-Modi

ModusWas passiertLöscht im Ziel?
Neu / Geändert Neue und geänderte Dateien werden von Quelle → Ziel kopiert. Dateien, die nur im Ziel vorhanden sind, bleiben unangetastet. Nein
Spiegel Das Ziel wird zu einem exakten Abbild der Quelle. Dateien, die im Ziel, aber nicht in der Quelle vorhanden sind, werden gelöscht. Ja!
Bidirektional Synchronisiert in beide Richtungen. Die jeweils neuere Datei überschreibt die ältere (nach Änderungsdatum). Nein
⚠ Achtung — Spiegel-Modus Im Spiegel-Modus werden Dateien und Ordner im Ziel, die in der Quelle nicht vorhanden sind, unwiderruflich gelöscht! Das Programm zeigt vor dem Start immer eine Sicherheitsabfrage. Bitte vor der ersten Verwendung testen.

Optionen

OptionBeschreibung
Unterordner Bezieht alle Unterordner rekursiv in Vergleich und Synchronisierung ein. Deaktivieren, um nur den Hauptordner (ohne Unterordner) zu verarbeiten.
MD5-Hash Vergleicht Dateiinhalte per MD5-Prüfsumme statt nur Größe und Datum. Erkennt zuverlässig auch Bit-Fehler, ist aber deutlich langsamer. Empfohlen nur für kleine Ordner oder bei Verdacht auf Datenfehler.
ℹ Dauerhafte Ordnerüberwachung „Auto-Monitor" gibt es ab v2.0.0 nur noch pro Job im Tab 🗂 Job-Verwaltung (Häkchen „Auto"), nicht mehr als Checkbox im Hauptformular.

Filter (Ausschlüsse) NEU v1.4.0

Mit der Filter-Leiste können bestimmte Dateien und Ordner von Vergleich und Synchronisierung ausgeschlossen werden. Filter werden mit dem Job gespeichert.

Datei-Filter

Ausschlussmuster für Dateinamen — Semikolon als Trennzeichen.

MusterSchließt aus
*.tmpAlle Dateien mit der Endung .tmp
*.bakAlle Backup-Dateien
Thumbs.dbWindows-Vorschaubilder-Datenbank (exakter Name)
desktop.iniWindows-Ordner-Konfigurationsdatei
~$*Temporäre Office-Sperrdateien
*.~lock.*LibreOffice-Sperrdateien
~*.tmp;*.bak;Thumbs.dbMehrere Muster kombiniert

Ordner-Filter

Ordnernamen oder -muster — der Ordner selbst und alle seine Inhalte werden übersprungen.

MusterSchließt aus
.gitGit-Versionsverwaltungsordner
__pycache__Python-Cache-Ordner
node_modulesNode.js-Abhängigkeiten
.svnSubversion-Ordner
temp*Alle Ordner, deren Name mit „temp" beginnt
*cache*Alle Ordner mit „cache" im Namen

Wildcard-Zeichen

ZeichenBedeutungBeispiel
*Beliebig viele Zeichen (auch keines)*.tmp → test.tmp, a.tmp, .tmp
?Genau ein beliebiges Zeichenlog?.txt → log1.txt, logA.txt
💡 Protokoll-Rückmeldung Im Protokoll-Tab wird nach jedem Vergleich gemeldet, wie viele Einträge durch die Filter ausgeschlossen wurden — z. B.: Filter: 47 Einträge ausgeschlossen in C:\Quelle

Symbolleiste

SchaltflächeFunktion
🔍 Vergleichen Analysiert Quell- und Zielordner und zeigt alle Unterschiede farblich im Tab „Unterschiede" an. Es werden noch keine Dateien kopiert oder gelöscht.
⟳ Synchronisieren Führt die Synchronisierung sofort durch. Falls vorher verglichen wurde, werden diese Ergebnisse verwendet; andernfalls wird automatisch vorher verglichen.
⏹ Stop Bricht die laufende Aktion (Vergleich oder Synchronisierung) sofort ab. Bereits kopierte Dateien bleiben erhalten.
⚙ Einstellungen Öffnet den Einstellungs-Dialog für Farben und Schrift.

Die Fortschrittsleiste und die Statuszeile darunter zeigen den Fortschritt der laufenden Aktion sowie den Namen der aktuell verarbeiteten Datei.

Tab: Unterschiede

Nach einem Vergleich zeigt dieser Tab alle gefundenen Dateien in einer Tabelle — farblich nach Status markiert.

Farbkodierung

FarbeStatusBedeutung
Gelb Nur Quelle Datei existiert nur im Quellordner, nicht im Ziel.
Orange Nur Ziel Datei existiert nur im Zielordner, nicht in der Quelle.
Rot Geändert Datei existiert in beiden Ordnern, hat sich aber verändert (Größe, Datum oder MD5).
Grün Identisch Datei ist in Quelle und Ziel identisch — keine Aktion nötig.

Spalten

SpalteInhalt
StatusNur Quelle / Nur Ziel / Geändert / Identisch
Datei / PfadRelativer Pfad der Datei innerhalb des Ordners
Q-Größe / Q-DatumGröße und Änderungsdatum in der Quelle
Z-Größe / Z-DatumGröße und Änderungsdatum im Ziel
AktionWas bei der Synchronisierung passieren würde (abhängig vom Modus)

Durch Klick auf eine Spaltenüberschrift wird die Liste nach dieser Spalte sortiert. Ein zweiter Klick kehrt die Sortierung um.

Unterhalb der Tabelle zeigt eine Zusammenfassung die Anzahl der Einträge pro Status und wie viele Dateien synchronisiert werden.

Tab: 🗂 Job-Verwaltung erweitert in v2.0.0

Hier lassen sich wiederverwendbare Jobs anlegen, speichern, laden und ausführen — mehrere Jobs können dabei gleichzeitig laufen bzw. Ordner überwachen. Ein Job speichert Quell-/Zielordner, Modus, Optionen und Filter unter einem Namen direkt im Programm (in data/config.json).

ℹ Ab v2.0.0: zentrale Stelle für Ordnerpaare Die frühere separate „Profil"-Leiste (Speichern/Laden eines einzelnen Ordnerpaares als Datei) wurde vollständig in diesen Tab integriert. Es gibt nur noch einen Ort, um Ordnerpaare zu verwalten: Jobs — inklusive Speichern/Laden als Datei über die Schaltflächen „Export …" / „Import …".

Unterschied zu Verlauf

Übersichtstabelle

SpalteBedeutung
AutoHäkchen = Auto-Monitor für diesen Job aktiv (Ordner wird dauerhaft überwacht, auch nach einem Neustart des Programms). Klick auf die Spalte schaltet um.
JobName des Jobs
Quelle / ZielKonfigurierte Ordner des Jobs
ModusNeu/Geändert, Spiegel oder Bidirektional
Status○ Bereit · ● Läuft … (mit Fortschritt in %) · ● Überwacht · ● Fehler

Schaltflächen

Mehrere Jobs gleichzeitig

Jeder gestartete Job läuft in einem eigenen Hintergrund-Thread. Es können beliebig viele Jobs parallel synchronisieren oder überwachen — die Übersichtstabelle zeigt den Status jedes Jobs live an. Abgeschlossene Job-Läufe erscheinen zusätzlich im Tab „Verlauf (Historie)".

Voraussetzung für Auto-Monitor

Auto-Monitor je Job benötigt das Paket watchdog (wird beim ersten Start automatisch installiert, siehe Systemvoraussetzungen). Ohne watchdog bleibt die „Auto"-Spalte deaktiviert.

Tab: Protokoll

Das Protokoll zeigt alle Aktionen des Programms in Echtzeit — mit Zeitstempel und farblicher Markierung:

Die Schaltflächen am unteren Rand des Tabs:

Das vollständige Protokoll wird dauerhaft in data/sync.log geschrieben.

Tab: Verlauf (Historie)

Die letzten 100 Synchronisierungsjobs werden automatisch gespeichert und in diesem Tab angezeigt.

Einträge in Grün = erfolgreich, in Rot = mit Fehler.

Schaltflächen

Auto-Monitor

Der Auto-Monitor überwacht einen Quellordner kontinuierlich im Hintergrund und löst automatisch eine Synchronisierung aus, wenn Änderungen erkannt werden.

ℹ Seit v2.0.0: nur noch pro Job Die frühere einzelne Checkbox „Auto-Monitor" im Hauptformular gibt es nicht mehr. Auto-Monitor wird jetzt ausschließlich im Tab 🗂 Job-Verwaltung je Job aktiviert — dadurch können beliebig viele Ordner gleichzeitig unabhängig voneinander überwacht werden, statt nur einer.

Aktivieren

  1. Job im Tab 🗂 Job-Verwaltung anlegen (Quelle, Ziel, Modus, Optionen)
  2. Häkchen in der Spalte Auto für diesen Job setzen — per Klick in der Übersicht, oder im Job-Dialog die Checkbox „Auto-Monitor (dauerhaft überwachen)" aktivieren
  3. Status in der Übersicht wechselt auf ● Überwacht

Verhalten

ℹ Voraussetzung Der Auto-Monitor benötigt das Paket watchdog. Ist es nicht installiert, ist die Checkbox deaktiviert. setup.bat erneut ausführen oder Internetverbindung prüfen.

Speicherprüfung

Sobald ein Zielordner eingetragen ist, zeigt das Programm unterhalb der Ordnerfelder den freien und belegten Speicherplatz des Ziel-Laufwerks:

Vor jeder Synchronisierung wird außerdem geprüft, ob genug Platz für alle zu kopierenden Dateien vorhanden ist. Reicht der Platz nicht aus, wird die Synchronisierung mit einer Fehlermeldung abgebrochen.

Einstellungen

Öffnen über ⚙ Einstellungen in der Symbolleiste. Alle Änderungen werden sofort angewendet und dauerhaft in data/config.json gespeichert.

Der Dialog ist in fünf Tabs gegliedert:

🎨 Farben

Folgende Farben sind einzeln anpassbar — Klick auf den farbigen Button öffnet den Windows-Farbauswahl-Dialog:

Die Schaltfläche „Standard" setzt alle Einstellungen auf die Werkseinstellungen zurück.

ℹ Modernes Erscheinungsbild — NEU in v2.0.0, verfeinert in v2.0.1/v2.0.2/v2.0.3 Tabs, Listen, Scrollbalken und Fortschrittsbalken verwenden jetzt das moderne sv-ttk-Theme, dazu eine ruhigere Grundpalette. Ist sv-ttk beim ersten Start nicht installiert, wird automatisch auf das klassische Erscheinungsbild zurückgefallen — keine Funktionseinschränkung.

Feinschliff in v2.0.1: die Symbolleisten-Schaltflächen (Vergleichen/Synchronisieren/Stop/Einstellungen/ Handbuch) flacher/dünnrandig statt als dicke 3D-Buttons (mit Hand-Cursor beim Überfahren), Tabellen-Spaltenüberschriften nicht mehr fett, der aktive Reiter (z. B. „🗂 Job-Verwaltung") wird farblich deutlich hervorgehoben, das Häkchen-Symbol in der Auto-Spalte der Job-Verwaltung ist größer und deutlicher sichtbar, und der Einstellungen-Dialog wurde verbreitert (520→680 px), damit die 5 Reiter (Farben/Schrift/Verhalten/Filter/Log & Verlauf) nicht mehr abgeschnitten dargestellt werden.

Kritischer Bugfix in v2.0.2: Ein experimenteller globaler Stil-Mechanismus aus v2.0.1 (betraf sämtliche Schaltflächen im Programm) konnte auf manchen Systemen beim Start zu einem komplett leeren, eingefrorenen Fenster führen (Python-Prozess beendete sich beim Schließen nicht). Dieser Mechanismus wurde entfernt — die Symbolleisten-Schaltflächen bleiben flach, alle anderen wie gewohnt. Zusätzlich abgesichert: Sollte das Programm beim Start künftig aus einem anderen Grund abstürzen, erscheint jetzt eine Fehlermeldung mit Details statt eines stillen leeren Fensters, und ein Protokoll wird in data/crash.log gespeichert.

Bugfix in v2.0.3: Die Auto-Checkbox in der Job-Verwaltung (und die Checkboxen im Ordner-Auswahldialog für Filter-Ausschlüsse) nutzten bisher Unicode-Symbole (☐/✔), die auf manchen Windows-Systemen/Schriftarten winzig und kaum als Checkbox erkennbar rendern. Umgestellt auf schriftartunabhängige ASCII-Klammer-Notation „[X]" (an) / „[ ]" (aus) — dadurch auf jedem System garantiert gut lesbar. Zugehörige Spalten leicht verbreitert.

🔤 Schrift

⚙ Verhalten

OptionBedeutung
Bestätigung vor Sync im Spiegel-Modus Zeigt vor jedem Spiegel-Sync eine Warnung (empfohlen, da Dateien im Ziel gelöscht werden).
Bestätigung vor jedem Sync Verlangt vor jedem Sync eine explizite Bestätigung (außer im Spiegel-Modus).
Fertig-Dialog nach Sync Wenn deaktiviert, erscheint nach dem Sync kein Popup — das Ergebnis steht nur in der Statusleiste.
Automatischer Vergleich nach Pfad-Änderung Startet den Vergleich automatisch, sobald Quell- oder Zielordner geändert werden.
Monitor-Verzögerung (ms) Wartezeit zwischen Änderungserkennung und automatischem Sync (Standard: 2500 ms). Höhere Werte verhindern Doppel-Syncs bei schnellen Dateioperationen.
Hash-Vergleich Präziserer, aber langsamerer Dateivergleich per MD5-Prüfsumme statt Datum/Größe.

🔍 Filter

Legt die Standard-Vorgaben für neue Sitzungen und Jobs fest:

Diese Werte werden beim nächsten Programmstart übernommen. Laufende Einstellungen im Hauptfenster bleiben unberührt.

📋 Log & Verlauf

OptionBedeutung
Max. Protokoll-Zeilen Begrenzt die Anzahl der Zeilen im Protokoll-Tab. Ältere Einträge werden automatisch entfernt (Standard: 2000).
Zeitstempel im Protokoll Stellt jedem Protokoll-Eintrag eine Uhrzeit (HH:MM:SS) voran.
Max. Verlauf-Einträge Begrenzt die Anzahl der gespeicherten Sync-Jobs im Verlauf-Tab (Standard: 100).

Programmstart (Autostart) NEU v1.6.0

Über ⚙ Einstellungen ▸ Verhalten ▸ „Programmstart" lässt sich festlegen, ob Dir Sync bl automatisch mit Windows startet und ob das Fenster dabei minimiert bleibt.

Mit Windows starten

Legt eine kleine Startdatei DirSyncBL_autostart.bat im Windows-Autostart-Ordner des aktuellen Benutzers an:

%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\DirSyncBL_autostart.bat

Diese Datei wechselt beim Anmelden lediglich in den Programmordner und ruft start.bat auf — also den Python-Quellcode-Weg (inkl. automatischer venv-Erkennung), unabhängig davon, ob im Alltag sonst DirSyncBL.exe verwendet wird. Beim Deaktivieren der Option wird die Datei wieder entfernt.

Selbstheilend Der Zustand wird bei jedem Programmstart geprüft und bei Bedarf automatisch nachgezogen — z. B. wenn der Programmordner verschoben wurde oder die Datei versehentlich gelöscht wurde, aber die Option weiterhin aktiviert ist.
💡 Autostart mit der EXE Wer normalerweise DirSyncBL.exe nutzt und auch der Autostart darüber laufen soll: eine Verknüpfung zu dist\DirSyncBL.exe manuell in den Windows-Autostart-Ordner legen (Win+R → shell:startup), statt die Option „Mit Windows starten" in den Einstellungen zu verwenden.

Fenster minimiert starten

Gilt für jeden Programmstart, nicht nur den Windows-Autostart — auch beim manuellen Doppelklick startet das Fenster dann minimiert in der Taskleiste.

Auto-Monitor-Jobs laufen trotzdem sofort Als Auto-Monitor markierte Jobs (Tab „🗂 Job-Verwaltung") werden beim Programmstart unabhängig vom Fensterzustand automatisch wieder aktiviert und überwachen ihren Ordner im Hintergrund — auch wenn das Fenster minimiert bleibt.

Typische Kombination

Für einen unauffälligen Hintergrunddienst: „Mit Windows starten" und „Fenster minimiert starten" zusammen aktivieren, zusätzlich die gewünschten Jobs im Tab „Job-Verwaltung" mit dem Häkchen „Auto" versehen. Nach dem nächsten Windows-Start läuft die Überwachung dann automatisch an, ohne das Fenster in den Vordergrund zu holen.

In den Systray minimieren NEU v2.1.0

Bis einschließlich v2.0.4 legte Dir Sync bl bewusst kein Systray-Icon an — „minimiert" bedeutete minimiert in der Windows-Taskleiste, nicht versteckt. Ab v2.1.0 ist das über die zusätzliche Checkbox „In den Systray minimieren" optional aktivierbar (Standard: aus, bestehende Konfigurationen verhalten sich unverändert).

Ist die Option aktiv, verschwindet das Fenster beim Minimieren (Fenster-Button oder in Kombination mit „Fenster minimiert starten") nicht in die Taskleiste, sondern in ein Symbol im Windows-Infobereich (Systray, unten rechts neben der Uhr). Von dort aus:

Als Auto-Monitor markierte Jobs (Tab „🗂 Job-Verwaltung") laufen dabei unabhängig vom Fensterzustand unverändert im Hintergrund weiter.

Benötigt das Paket pystray Wird beim ersten Start wie die übrigen Pakete automatisch installiert (siehe Systemvoraussetzungen). Ist es nicht verfügbar, bleibt die Checkbox in den Einstellungen deaktiviert und ausgegraut — Minimieren funktioniert dann wie bisher über die Taskleiste, ohne Funktionseinschränkung sonst.

Beenden

Ein Klick auf das [X] in der Titelleiste beendet das Programm immer direkt und vollständig — das gilt unabhängig davon, ob „In den Systray minimieren" aktiv ist: es gibt kein „Schließen in den Tray", nur das Minimieren kann optional über den Systray laufen (siehe oben).

Gespeicherte Dateien

DateiInhalt
data/config.json Fenstergröße und -position, Farben, Schrift, Sync-Einstellungen, Filter, letzter Ordner, Job-Verlauf (max. 100 Einträge)
data/sync.log Vollständiges Protokoll aller Sync-Aktionen mit Zeitstempel
icon.ico Programm-Icon für Titelleiste und Taskleiste (beim ersten Start automatisch erzeugt)
*.dsync Exportierte Jobs (frei wählbarer Speicherort, siehe Tab 🗂 Job-Verwaltung)
💡 Tipp: config.json zurücksetzen Um alle Einstellungen auf Standard zurückzusetzen, einfach data/config.json löschen und das Programm neu starten.

Fehlerbehebung

„Python wurde nicht gefunden"

Python ist nicht installiert oder nicht im PATH. Lösung: Python 3.10+ von python.org herunterladen. Beim Installer unbedingt „Add Python to PATH" aktivieren. Danach start.bat erneut starten.

Pakete können nicht installiert werden

Internetverbindung prüfen. Firewall oder Proxy kann die Installation blockieren. setup.bat als Administrator ausführen kann helfen. Das Programm startet auch ohne optionale Pakete — mit eingeschränkten Funktionen.

Drag & Drop funktioniert nicht

tkinterdnd2 konnte nicht installiert werden. Ordner über die 📁-Schaltfläche oder durch direktes Eintippen des Pfades angeben.

Speicheranzeige fehlt / Auto-Monitor nicht verfügbar

psutil bzw. watchdog fehlt. setup.bat erneut ausführen oder manuell installieren:

venv\Scripts\pip install psutil watchdog

Kein Icon in der Titelleiste

Pillow fehlt. setup.bat erneut ausführen. Das Programm arbeitet ohne Icon vollständig normal.

Oberfläche wirkt klassisch statt modern

sv-ttk konnte nicht installiert werden. setup.bat erneut ausführen oder manuell installieren:

venv\Scripts\pip install sv-ttk

Das Programm funktioniert auch ohne modernes Theme uneingeschränkt.

„In den Systray minimieren" ist ausgegraut

pystray konnte nicht installiert werden. setup.bat erneut ausführen oder manuell installieren:

venv\Scripts\pip install pystray

Das Programm funktioniert auch ohne diese Option uneingeschränkt — Minimieren geht dann wie gewohnt in die Taskleiste.

Filter schließen zu viel / zu wenig aus

Muster prüfen: Wildcards * und ? beachten. Groß-/Kleinschreibung bei Dateinamen prüfen (Windows ist nicht case-sensitiv, das Programm vergleicht den tatsächlichen Dateinamen). Im Protokoll-Tab wird die Anzahl gefilterter Einträge angezeigt.

Synchronisierung mit Fehlern abgebrochen

Protokoll-Tab öffnen — rote Einträge zeigen den genauen Fehler. Häufige Ursachen: Datei von anderem Programm gesperrt, fehlende Schreibrechte, Speicherplatz erschöpft.

Versionshistorie

VersionÄnderungen
2.1.2
2026-08
Zweiter Bugfix „Beenden über Systray hängt": Nutzer meldete nach v2.1.1 weiterhin dasselbe Symptom (leeres, eingefrorenes „Geisterfenster" nach „Beenden" über das Tray-Menü). Der Threading-Fix aus v2.1.1 war zwar richtig, hat aber eine zweite, unabhängige Ursache nicht beseitigt: _tray_quit() blendete das Fenster über deiconify() kurz wieder ein, unmittelbar bevor es (über _on_close()) endgültig zerstört wurde — ohne dass der Tk-Mainloop dazwischen Gelegenheit hatte, das Fenster tatsächlich fertig zu zeichnen. Unter Windows konnte das zu genau so einem eingefrorenen, halb gezeichneten „Geisterfenster" führen. Fix: Das unnötige deiconify() in _tray_quit() wurde entfernt (ein verstecktes/withdraw-Fenster kann problemlos beendet werden, ohne vorher sichtbar zu sein). Zusätzlich wurde der komplette Tray-Ablauf (Icon-Start, Öffnen, Beenden) mit Protokoll-Einträgen versehen, die in data/sync.log landen — sollte das Problem doch noch einmal auftreten, zeigt das Log genau, an welcher Stelle es hängt.
2.1.1
2026-08
Bugfix „Beenden über Systray hängt": Nutzer meldete nach v2.1.0, dass „Beenden" über das Tray-Menü weder das Fenster noch den Prozess sauber beendete — musste über den Task-Manager beendet werden. Diesmal war auch die EXE betroffen, die von diesem Symptom bislang immer verschont geblieben war (siehe Bugfix in v2.0.4). Ursache: Die Tray-Menü-Klicks („Öffnen"/„Beenden") liefen im pystray-Hintergrund-Thread und riefen von dort direkt Tkinter-Funktionen auf (root.after(), deiconify() über _tray_quit()) — Tcl/Tkinter ist aber nicht zuverlässig thread-sicher, unter Windows konnte der Aufruf den Tk-Mainloop nie erreichen. Fix: Die Tray-Callbacks reihen jetzt nur noch eine Aktion in eine queue.Queue ein (thread-sicher, ohne jede Tk-Berührung); eine neue, sich selbst über root.after() nachplanende Methode _tray_pump() — nach demselben Muster wie die bestehenden _pump()/_job_pump()- Schleifen für andere Hintergrund-Threads — verarbeitet die Queue ausschließlich im Tk-Haupt-Thread. Damit berührt kein Code mehr außerhalb des Haupt-Threads Tkinter direkt.
2.1.0
2026-08
Neues Feature: In den Systray minimieren — bisher legte Dir Sync bl bewusst kein Systray-Icon an, „minimiert" bedeutete immer minimiert in der Taskleiste. Ab sofort über eine neue Checkbox (⚙ Einstellungen ▸ Verhalten ▸ Programmstart) optional aktivierbar (Standard: aus). Bei aktiver Option verschwindet das Fenster beim Minimieren in ein Symbol im Windows-Infobereich statt in der Taskleiste; Doppelklick bzw. Rechtsklick ▸ „Öffnen" blendet es wieder ein, Rechtsklick ▸ „Beenden" beendet das Programm vollständig (inkl. der gewohnten Sicherheitsabfrage bei laufenden Vorgängen). Auto-Monitor-Jobs laufen währenddessen unverändert im Hintergrund weiter. Das Schließen-Symbol [X] beendet das Programm weiterhin immer vollständig — das bleibt bewusst so, nur das Minimieren nutzt optional den Systray. Benötigt das neue Paket pystray, das wie die übrigen Pakete beim ersten Start automatisch installiert wird; ist es nicht verfügbar, bleibt die Checkbox deaktiviert und ausgegraut, ohne sonstige Funktionseinschränkung. Siehe Programmstart (Autostart)
2.0.4
2026-08
Bugfix „Beenden hängt": Wenn ein Job mit aktivem Auto-Monitor lief und das Programm über den Python-Quellcode (start.bat) gestartet war, blieb beim Beenden manchmal ein leeres Fenster/Prozess übrig — musste über den Task-Manager beendet werden. Die gebaute EXE war davon nicht betroffen. Ursache: Der reale watchdog-Überwachungs-Thread war nicht als Daemon markiert; falls sein stop()-Aufruf unter Windows nicht sofort zurückkehrt, wartete der normale Python-Interpreter beim Beenden unbegrenzt auf diesen Thread — die EXE ist von dieser Wartelogik nicht betroffen, weshalb der Fehler dort nie auftrat. Fix: Thread wird jetzt explizit als Daemon markiert, damit er den Prozess in keinem Startmodus mehr blockieren kann
Handbuch überarbeitet: DirSyncBL.exe (per build_exe.bat gebaut) wird jetzt als normaler, empfohlener Startweg beschrieben — start.bat/ Python-Quellcode als Alternative für Entwicklung oder portable Nutzung ohne Build-Schritt
2.0.3
2026-08
Bugfix: Die Auto-Checkbox in der Job-Verwaltung und die Checkboxen im Ordner-Auswahldialog (Filter-Ausschlüsse) nutzten bisher Unicode-Ballot-Box-Symbole (☐/✔), die auf manchen Windows-Systemen/Schriftarten winzig und kaum als Checkbox erkennbar rendern (wiederholtes Nutzer-Feedback nach v2.0.1/v2.0.2). Umgestellt auf schriftartunabhängige ASCII-Klammer-Notation „[X]" (an) / „[ ]" (aus) — dadurch auf jedem System garantiert gut lesbar. Zugehörige Tabellenspalten leicht verbreitert
2.0.2
2026-08
Kritischer Bugfix: Ein experimenteller globaler Stil-Mechanismus aus v2.0.1 (Tk-Optionsdatenbank für sämtliche Schaltflächen im Programm) konnte auf manchen Systemen beim Start zu einem komplett leeren, eingefrorenen Hauptfenster führen — der Python-Prozess beendete sich beim Schließen nicht. Dieser Mechanismus wurde entfernt; die Symbolleisten-Schaltflächen bleiben flach, alle anderen Schaltflächen unverändert wie gewohnt
Absturzsicherung ergänzt: Scheitert der Programmstart künftig aus einem anderen Grund, erscheint jetzt eine Fehlermeldung mit Details statt eines stillen leeren Fensters, und der Fehler wird zusätzlich in data/crash.log protokolliert
2.0.1
2026-08
GUI-Feinschliff (Nutzer-Feedback nach v2.0.0): alle Schaltflächen flacher/ dünnrandig statt als dicke 3D-Buttons, mit Hand-Cursor beim Überfahren (betrifft Symbolleiste, Dialoge und Job-Verwaltung gleichermaßen)
Tabellen-Spaltenüberschriften (z. B. „Auto · Job · Quelle · Ziel …") nicht mehr fett
Aktiver Reiter (z. B. „🗂 Job-Verwaltung") wird jetzt farblich deutlich hervorgehoben
Häkchen-Symbol in der Auto-Spalte der Job-Verwaltung vergrößert (☑ → ✔) und Spalte verbreitert, Zeilenhöhe der Tabellen leicht erhöht — insgesamt besser lesbar
Einstellungen-Dialog verbreitert (520 → 680 px): die 5 Reiter (Farben, Schrift, Verhalten, Filter, Log & Verlauf) wurden bei der schmaleren Breite durch das großzügigere sv-ttk-Reiter-Padding abgeschnitten/überlappend dargestellt
2.0.0
2026-08
Oberfläche neu strukturiert: Die separate „Profil"-Leiste (Speichern/Laden eines einzelnen Ordnerpaares als Datei) und die einzelne „Auto-Monitor"-Checkbox im Hauptformular wurden entfernt und vollständig in den Tab „🗂 Job-Verwaltung" integriert — dort jetzt zusätzlich 💾 Export … / 📂 Import … für .dsync-Dateien (abwärtskompatibles Dateiformat, ältere Profil-Dateien bleiben importierbar)
Modernes Erscheinungsbild: Tabs, Listen, Scrollbalken und Fortschrittsbalken nutzen jetzt das sv-ttk-Theme, dazu eine ruhigere, weniger farbintensive Grundpalette — bei fehlendem sv-ttk automatischer Rückfall auf das klassische Erscheinungsbild
Fenster robuster gegen Verkleinern: höhere Mindestgröße (820 × 700 px) verhindert, dass Bedienelemente (z. B. Start/Stop in der Job-Verwaltung) beim Verkleinern aus dem sichtbaren Bereich verschwinden — behebt einen Darstellungsfehler aus v1.6.0
1.6.0
2026-08
Programmstart-Einstellungen (Tab ⚙ Einstellungen ▸ Verhalten ▸ „Programmstart"): „Mit Windows starten" legt/entfernt eine Autostart-Datei im Windows-Autostart-Ordner (ruft beim Anmelden start.bat auf), Zustand wird bei jedem Programmstart selbstheilend geprüft
„Fenster minimiert starten": Fenster startet minimiert in der Taskleiste — gilt für jeden Start, nicht nur Autostart
Als Auto-Monitor markierte Jobs (Tab „🗂 Job-Verwaltung") laufen dabei unabhängig vom Fensterzustand automatisch wieder an
Handbuch-Farbschema gedämpft (weniger kräftiges Blau)
1.5.0
2026-08
Neuer Tab „🗂 Job-Verwaltung": wiederverwendbare Jobs anlegen, bearbeiten, duplizieren und löschen — gespeichert direkt in data/config.json (Name, Quelle, Ziel, Modus, Optionen, Filter)
Mehrere Jobs gleichzeitig: jeder gestartete Job läuft in einem eigenen Hintergrund-Thread — beliebig viele Jobs können parallel synchronisieren oder ihren Ordner überwachen
Live-Übersicht: Status je Job (Bereit / Läuft mit Fortschritt / Überwacht / Fehler) direkt in der Tabelle sichtbar
Auto-Monitor je Job: eigenes Häkchen pro Job — an-/ausklickbar, überwachter Ordner startet automatisch wieder beim nächsten Programmstart
Tab „Verlauf (Jobs)" in „Verlauf (Historie)" umbenannt, um Verwechslung mit der neuen Job-Verwaltung zu vermeiden
Kleinere Aufräumarbeiten an der Oberfläche
1.4.25
2026-07
Bugfix „Ordner ausschließen": Der Auswahldialog las beim Öffnen den kompletten Ordnerbaum rekursiv ein — im GUI-Thread. Bei großen Ordnern (v. a. auf NAS/Netzlaufwerken) fror dadurch das gesamte Programm ein
Jetzt echtes Lazy Loading: Beim Öffnen wird nur die erste Ordner-Ebene geladen (ein einziger Verzeichniszugriff), tiefere Ebenen erst beim Aufklappen des jeweiligen Knotens — der Dialog öffnet damit auch bei riesigen Ordnerbäumen sofort
Interne Vereinfachung: leichtgewichtige Checkbox-Verwaltung statt eines tk-Objekts pro Ordner (weniger Speicher, schnellere Anzeige)
Robuster gegen Zugriffsfehler: Neben PermissionError wird nun auch OSError (z. B. NAS-Verbindungsabbruch) abgefangen
Vorauswahl verbessert: Bereits ausgeschlossene Ordnernamen werden nun auch in Unterordnern korrekt als angekreuzt angezeigt
1.4.24
2026-07
Paralleles Kopieren: Kopiervorgänge laufen jetzt gleichzeitig statt nacheinander
Worker-Anzahl passt sich automatisch an: 5 parallel bei kleinen/mittleren Dateien, 2 bei Dateien >500 MB (schont Bandbreite pro NAS-Verbindung)
Löschvorgänge (mirror-Modus) laufen weiterhin sequenziell nach den Kopien
Fortschrittsbalken und Statuszeile bleiben dabei thread-sicher über die Queue aktuell
Besonders spürbar bei vielen kleinen/mittleren Dateien über NAS/Netzlaufwerke
Bugfix Stop-Button: Beim Klick auf „Stop" während des Vergleichs blieben verspätet eintreffende Status-Meldungen des Scan-Threads in der Anzeige hängen und überschrieben „Gestoppt" — sah aus, als würde der Vorgang weiterlaufen. Status-/Fortschrittsmeldungen werden jetzt verworfen, sobald eine Aktion gestoppt wurde
1.4.23
2026-06
Code-Review Teil 2: 7 weitere Probleme behoben
Sortierung: arbeitet jetzt auf allen Diffs, auch nach aktivem Filter korrekt
Race condition: Watchdog-Thread ruft root.after nicht mehr direkt auf (→ Queue)
_save_state: schreibt config.json nur noch bei echten Änderungen
Scan: iterativer Stack statt Rekursion — kein Stack-Overflow bei tiefen Ordnern
Scan: Timeout nach 30 Minuten (NAS-Trennung wird erkannt)
DirPickerDlg: O(1) IID-Lookup statt linearem Scan
fmt_size(0) zeigt jetzt "0 B" statt "0.0 B"
1.4.22
2026-06
Code-Review: 11 Probleme behoben
Duplikat-Code: _load_profile/_load_profile_path zusammengeführt → _apply_profile
jobs_max wird jetzt korrekt in add_job respektiert (war hart auf 100 kodiert)
_animate_bar kann nicht mehr mehrfach gleichzeitig laufen
Toter Code entfernt: ttk-Progressbar (nie gepackt), src_exc/dst_exc, n_total
tkinterdnd2 aus Bootstrap-Pflichtliste entfernt (schlägt auf vielen Systemen fehl)
Logikfehler: doppeltes own_bg in _colorize korrigiert
1.4.21
2026-06
EXE-Build: build_exe.bat + DirSyncBL.spec für PyInstaller
EXE läuft ohne Python-Installation auf jedem Windows-PC
Pfad-Handling für PyInstaller (_RES_BASE / _BASE) korrekt implementiert
1.4.20
2026-06
Profil-History: voller Quellpfad, Zielpfad in der Mitte gekürzt (Anfang … Ende)
1.4.19
2026-06
Profil-History: zeigt jetzt Quelle → Ziel vorne, dann Profilname
1.4.18
2026-06
Profil-History: zeigt jetzt Name und Pfad an
1.4.17
2026-06
Profil-History: wird jetzt korrekt gespeichert und angezeigt
(Ursache: fehlender recent_profiles-Eintrag in bestehender config.json)
1.4.16
2026-06
Filter-Logik korrigiert: Klick auf Button zeigt NUR diese Kategorie an
Nochmal klicken → alle Kategorien wieder anzeigen
„Alle"-Button zeigt ebenfalls alle Kategorien
1.4.15
2026-06
Filter sofort: Umschalten zwischen Filter-Kategorien ist jetzt augenblicklich
Technisch: statt löschen+neu einfügen wird detach/reattach verwendet — die 30.000 Einträge bleiben im Speicher, werden nur ein-/ausgeblendet
1.4.14
2026-06
Profil-Historie: Schaltfläche „🕐 ▾" neben „Laden" zeigt die letzten 8 verwendeten Profile — direktes Laden per Klick, ohne Dateidialog
Nicht mehr vorhandene Profile werden automatisch aus der History entfernt
Filter-Buttons: schnelleres Leeren der Liste bei 30.000+ Einträgen
1.4.13
2026-06
Filter-Buttons: funktionieren jetzt auch bei sehr großen Listen (30.000+ Dateien)
Ursache: Python-Argument-Limit bei delete(*30000_items) — jetzt einzeln gelöscht
Button-Farben bleiben nach Filter-Anwendung korrekt erhalten
1.4.12
2026-06
Filter-Buttons: Logik komplett neu — einheitliche Keys durchgängig
Farben der Filter-Chips zeigen jetzt korrekt aktiv/inaktiv
Umschaltverhalten zuverlässig: einzeln an/aus, letzter aktiver → alle ein
1.4.11
2026-06
Filter-Buttons: intuitives Umschaltverhalten
Klick auf einen Button → nur diese Kategorie anzeigen (Solo-Modus)
Nochmal klicken → alle Kategorien wieder anzeigen
1.4.10
2026-06
Filter-Buttons in der Legende: Klick auf „Nur Quelle", „Nur Ziel", „Geändert" oder „Identisch" zeigt nur diese Einträge — Klick nochmal zeigt alle wieder
„Alle"-Button setzt Filter komplett zurück
Statuszeile zeigt „Angezeigt: N" wenn ein Filter aktiv ist
Fortschrittsbalken: dezenteres Blau (#5B9BD5 statt #0D47A1)
1.4.9
2026-06
Parallel-Scan: Quelle und Ziel werden gleichzeitig gescannt (zwei Threads) — halbiert die Scan-Zeit bei NAS/Netzlaufwerken
Fortschrittsbalken: eigene Canvas-Animation — funktioniert zuverlässig auf allen Windows-Themes
Indeterminate-Balken: wandernder Block während Scan-Phase
Determinate-Balken: exakter Prozentsatz während Vergleich und Sync
1.4.8
2026-06
Performance-Optimierungen
Scan: os.scandir() statt glob() — bis zu 30× schneller (stat+name in einem Syscall)
Scan: Ausgeschlossene Ordner werden sofort übersprungen, kein Abstieg in den Ordner
Vergleich: Config-Lookup (use_hash) einmal statt bei jeder Datei
Vergleich + Sync: max. 200 Fortschritts-Updates statt bei jeder einzelnen Datei
Sync: Log-Einträge nur bei Fehlern — kein Queue-Overhead pro kopierter Datei
Queue-Pump: 40 ms statt 80 ms — flüssigere Status-Anzeige
1.4.7
2026-06
Buttons „Vergleichen" und „Synchronisieren": lesbare Farbe im deaktivierten Zustand
(tkinter ignoriert fg bei disabled — disabledforeground explizit gesetzt)
1.4.6
2026-06
Legende-Chips: zeigen jetzt korrekt die Farben aus den Einstellungen
Legende-Chips: werden bei Theme-Änderung sofort aktualisiert
Fortschrittsbalken: sichtbar auf allen Windows-Themes (vista/winnative/clam)
1.4.5
2026-06
Protokoll: doppelter Timestamp behoben (Engine + UI hatten beide einen gesetzt)
Protokoll-Schrift: Segoe UI 10 pt statt Consolas 9 pt — besser lesbar
Protokoll: horizontale Scrollbar ergänzt, Zeilenabstand erhöht
Fehler-Meldungen im Protokoll fett + rot hervorgehoben
1.4.4
2026-06
Vergleich: wandernder Fortschrittsbalken (indeterminate) während Scan-Phase
Scan-Status zeigt Datei-Anzahl alle 50 Dateien: »Scanne ‹Ordner› … 350 Dateien«
Nach Scan: determinate Balken zeigt Fortschritt beim Eintragsvergleich
Progressbar wird sauber zurückgesetzt nach Abschluss/Stop
1.4.3
2026-06
Einstellungen-Button farbig (grau-blau)
Zonen-Hintergründe dezenter (heller Pastell)
Status-Anzeige (laufende Aktion) als orange Pill in Toolbar sichtbar
Datei-Statuszeile blendet sich aus wenn nichts läuft
1.4.2
2026-06
Schriftgröße Standard 10 pt (war 9)
Icon korrekt in Titelleiste und Taskleiste
Farbige Bereiche im Hauptfenster (Ordner, Filter, Modus, Optionen)
Statuszeile zeigt aktuell kopierte/gelöschte Datei prominenter
Spiegel-Warnung im Tooltip und Handbuch hervorgehoben
1.4.1
2026-06
Erweiterte Einstellungen: 5 Tabs statt 2 — Verhalten, Filter-Standards, Log & Verlauf
Bestätigungs-Dialoge konfigurierbar (Spiegel-Modus, allgemeiner Sync, Fertig-Dialog)
Monitor-Verzögerung einstellbar (Standard 2500 ms)
Zeitstempel im Protokoll ein/aus schaltbar
Max. Protokoll-Zeilen und Verlauf-Einträge einstellbar
Standard-Filter und Standard-Sync-Modus in Einstellungen speicherbar
1.4.0
2026-06
Filter-Funktion: Dateien und Ordner per Wildcard-Muster ausschließen
Bootstrap-Installer: Automatische Paket-Installation beim ersten Start
Kein Systray mehr: [X] beendet das Programm direkt
Filter werden in Profilen mitgespeichert
1.3.0 Profile speichern/laden (.dsync), Profil-Leiste, Versionsnummer in config.json
1.2.0 Bidirektionaler Sync-Modus, MD5-Hash-Vergleich, Verlauf (Jobs), Protokoll-Export
1.0.0 Erstveröffentlichung: Vergleich, Neu/Geändert- und Spiegel-Modus, Auto-Monitor, Systray, Drag & Drop, Einstellungs-Dialog