Skip to content

zfzfg/FolderSyncManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Folder Sync Manager

A menu-driven PowerShell tool for automatic folder synchronization on Windows.
Made by Projektgruppe STERRA · https://sterra.online


Overview

Folder Sync Manager lets you keep folders in sync across local drives, external drives, and network shares (UNC paths). It supports three sync types and three delivery modes, all configurable through an interactive console menu — no command-line knowledge required.

Configuration is encrypted with Windows DPAPI and stored per user, so your folder paths are never readable by other accounts on the same machine.


Features

  • 3 sync types — Backup, Sync (bidirectional), and Mirror
  • 3 delivery modes — Instant background daemon, scheduled daily reminders, or manual launcher
  • Real-time daemon using FileSystemWatcher with debounce logic — changes are reflected in milliseconds
  • Conflict detection in bidirectional sync — conflicting files are renamed instead of overwritten
  • Automatic catch-up sync every 10 minutes in daemon mode to cover missed events
  • Network share support — connects to UNC paths (\\Server\Share) with optional credentials
  • Encrypted config via Windows DPAPI (only the current Windows user can decrypt)
  • Log rotation — daemon log capped at 5 MB, auto-rotated to .bak
  • No admin rights required for standard use
  • Multiple connections — manage any number of folder pairs, each with its own sync type and delivery mode
  • Pause/Resume individual connections without deleting them
  • Mutex-protected sync — prevents concurrent sync conflicts

Requirements

Requirement Version
Windows PowerShell 5.1 or later
.NET Framework 4.5+ (pre-installed on Windows 10/11)
Windows OS Windows 10 or Windows 11

Administrator rights are not required for standard use. The installer registers tasks with RunLevel Limited.


Getting Started

Option A — Double-click launcher (recommended)

Double-click StartFolderSync.bat in the same folder as the script. This opens the interactive menu with elevated permissions if needed.

Option B — PowerShell directly

powershell.exe -ExecutionPolicy Bypass -File "FolderSync.ps1"

On first launch, choose 1 — Install / Activate from the main menu to set up your connections.


Main Menu

=== FOLDER SYNC MANAGER ===

  Projektgruppe STERRA  |  Made by Collin Lerche (zfzfg)
  https://sterra.online
  Copyright (c) 2026 Collin Lerche (zfzfg)  |  MIT License

  Status : Installed  (daemon:1 reminder:0 manual:0 paused:0)

    1.  Install / Activate
    2.  Edit configuration
    3.  Uninstall / Deactivate
    4.  Sync now (manual run)
    5.  Connections overview
    6.  View daemon log
    7.  Exit
Option Action
1 Run the setup wizard to add folder pairs and choose delivery modes
2 Add/remove connections, change sync type or delivery mode, pause/resume, edit reminder times or launcher location
3 Stop and remove the daemon task and all scheduled tasks
4 Run a one-time sync across all active connections immediately
5 Show all connections with their type, mode, and active/paused status
6 View the last 40 lines of the daemon log
7 Exit

Sync Types

Each folder pair has an independently assigned sync type:

A — Backup (one-way)

Copies new and changed files from Source → Destination. Deletions in Source are ignored — files stay in Destination. Safe for simple backups where you never want to lose data.

S — Sync (bidirectional)

Tracks both folders using a snapshot. Changes in either side are propagated to the other. Deletions are mirrored.
Conflict handling: If both sides changed the same file since the last snapshot, the older copy is renamed (e.g. file.conflict-20260523-142500.txt) and both versions are kept.

M — Mirror (one-way strict)

Source always wins. Destination becomes an exact copy of Source — files deleted from Source are also deleted from Destination, and no extra files are kept in Destination.


Delivery Modes

Each folder pair also has an independently assigned delivery mode:

Instant (Daemon)

A background PowerShell process runs silently using FileSystemWatcher. It starts automatically at every Windows logon via a registered Scheduled Task (FolderSync_Daemon). Changes are synced within ~500 ms. A catch-up full sync runs every 10 minutes.

Reminder

Windows Task Scheduler triggers a popup dialog at your configured daily times (e.g. 08:00, 18:30). The dialog asks whether to sync now or be reminded later.

Manual

A StartSync.bat launcher file is generated at a location of your choice. Double-clicking it triggers a full sync for all manual-mode connections.


Setup Wizard (Menu Option 1)

The wizard walks you through two steps:

Step 1 — Connections
For each connection, you provide:

  • Source folder path (local or UNC)
  • Destination folder path (local or UNC)
  • Sync type: Backup / Sync / Mirror
  • Delivery mode: Instant / Reminder / Manual

You can add multiple connections in one wizard run.

Step 2 — Delivery infrastructure

  • If any connection uses Reminder: enter one or more daily times (HH:mm)
  • If any connection uses Manual: choose a folder where StartSync.bat will be created
  • If any connection uses Instant (Daemon): the daemon task is registered automatically

Edit Configuration (Menu Option 2)

    1.  Add a connection
    2.  Remove a connection
    3.  Change sync type
    4.  Change delivery mode
    5.  Pause / Resume a connection
    6.  Edit reminder times
    7.  Change launcher location
    8.  Save and return
    9.  Cancel (discard changes)

Configuration Storage

File Purpose
%APPDATA%\FolderSync\SyncConfig.json Encrypted configuration (DPAPI, current user only)
%APPDATA%\FolderSync\daemon.log Daemon activity log (rotates at 5 MB)
%APPDATA%\FolderSync\daemon.log.bak Previous log rotation backup
%APPDATA%\FolderSync\FolderSync.ps1 Daemon script copy (auto-updated on install)
%APPDATA%\FolderSync\daemon_launcher.vbs Silent VBScript launcher for the daemon task
%APPDATA%\FolderSync\daemon.pid Running daemon process ID
%APPDATA%\FolderSync\snapshot_*.json Sync snapshots for bidirectional mode (S)

Command-Line Flags

These flags are used internally (by the daemon task and launcher scripts) and are not needed for normal interactive use:

Flag Effect
(none) Open the interactive main menu
-Daemon Start the background daemon (FileSystemWatcher loop)
-DaemonInitSync Run a one-time initial sync for all daemon connections
-Reminder Trigger the reminder popup dialog
-Manual Run a one-time sync for all manual-mode connections
-AutoSync Legacy alias for -Reminder

Daemon Log Format

2026-05-23 14:30:01  START  Daemon started (PID 9142, 2 daemon connection(s), ...)
2026-05-23 14:30:05  BAK    Documents\report.docx
2026-05-23 14:32:11  SYN>   Projects\code.py
2026-05-23 14:32:11  DEL    old_file.txt
2026-05-23 14:33:00  INFO   Config reloaded.
Level Meaning
START Daemon started
STOP Daemon stopped
INFO Informational message
WARN Warning (non-fatal)
ERR Error during a sync operation
BAK File copied (Backup mode)
SYN> File synced forward (Sync/Mirror mode)
SYN< File synced backward (Sync mode)
MIR> File mirrored (Mirror mode)
DEL File deleted from destination

Troubleshooting

"Execution Policy" error on launch
Use StartFolderSync.bat or run: powershell.exe -ExecutionPolicy Bypass -File "FolderSync.ps1"

Daemon not starting at logon
Go to menu → 3 (Uninstall), then → 1 (Install) again to re-register the scheduled task. Check Task Scheduler for FolderSync_Daemon.

Cannot reach UNC path (\\Server\Share)
The install wizard will prompt you to connect anonymously or with credentials. Credentials are stored only for the duration of the session via New-PSDrive and are never written to disk in plaintext.

Config is unreadable after moving to another user account
The configuration is encrypted with Windows DPAPI and can only be decrypted by the same Windows user account. Run the wizard again under the new account.

Sync not reflecting recent changes
The daemon runs a catch-up sync every 10 minutes. You can also trigger an immediate sync via menu option 4 (Sync now).


License

MIT License

Copyright (c) 2026 Collin Lerche (zfzfg) | Projektgruppe STERRA
https://sterra.online

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

About

Folder Sync Manager is a project by Projektgruppe STERRA.

About

A versatile PowerShell tool that automatically synchronizes, backs up, or mirrors folders. Ideal for backups, cloud folder replication, or synchronizing working directories across multiple devices. The configuration is stored encrypted using Windows DPAPI.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors