Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ZakSync

ZakSync is a lightweight Windows GUI for pushing selected local folders to Proton Drive with per-folder, Git-style exclusion rules. It delegates browser login, encryption, metadata handling, and transfers to Proton's official Drive CLI.

ZakSync is an independent, third-party application and is not officially supported by Proton. It does not use Proton logos or collect account credentials.

Pre-release: ZakSync is under active development. Keep a separate backup of important data while evaluating it.

Features

  • Add any number of local folders.
  • See existing sync roots created by Proton Drive desktop as read-only remote mappings.
  • Link orphaned ZakSync remote folders back to a local folder.
  • Choose a separate /my-files/... destination for each folder.
  • Configure exclusions from the cog beside each folder.
  • Add rules by file name, extension, folder name, or raw glob.
  • Preview how many files are included and excluded before syncing.
  • Run one folder, all enabled folders, or a simple in-app schedule.
  • Pause and resume all manual and scheduled sync runs.
  • Optionally start with Windows and open minimized on Windows-startup launches.
  • Opt in to verified in-place updates from this repository's GitHub releases.
  • Mirror local deletions to Proton Drive's trash, never permanent deletion.
  • Keep files already uploaded when a new exclusion rule hides them.
  • Store the Proton session only through the official CLI in Windows Credential Manager.
  • Stage uploads with NTFS hard links when possible, avoiding duplicate file data.

Sync Direction

ZakSync is intentionally a one-way local-to-cloud sync. Local additions and changes are uploaded. Local deletions move the corresponding remote item to trash after the first successful snapshot. Cloud-side edits and deletions do not modify local files.

This design uses the official CLI without recursively polling the Drive API or relying on the unsupported rclone Proton backend. Proton's SDK sync module is not generally available yet.

Pausing prevents new manual or scheduled runs. If a transfer is already active, ZakSync lets that folder finish safely and pauses before starting the next folder.

Updates

Automatic update checks are opt-in under Connection. When enabled, ZakSync checks this repository's GitHub releases at most once every 24 hours and prompts before downloading and restarting. Alpha builds can update to newer alpha or stable releases; stable builds ignore pre-releases.

The updater requires GitHub's published SHA-256 asset digest to match before execution. The downloaded app waits for the current process to exit, replaces the same ZakSync.exe, and restarts it. Keep the executable in a permanent folder where your Windows account has write access.

Exclusion Rules

Rules are evaluated relative to each selected local folder. Paths use / even on Windows. Matching is case-insensitive on Windows, and later rules win.

# Any file with this extension
*.tmp

# Any folder with this name, at any depth
node_modules/

# Only this file at the selected folder's root
/secrets.json

# Markdown below docs, at any depth
docs/**/*.md

# Include a file matched by an earlier rule
!logs/keep.log

Supported syntax includes *, **, ?, character classes such as [0-9], root anchoring with /, directory rules ending in /, comments beginning with #, and negation beginning with !.

Symbolic links and directory junctions are skipped to prevent traversal loops.

Paths containing spaces and Windows extended-length paths are supported. ZakSync uses Unicode extended path syntax when creating its temporary hard-link tree.

Run

Requirements:

Download ZakSync.exe from the GitHub releases page, then run it from a permanent folder. The Start with Windows option records that executable location, so move the app before enabling it.

In the app, open Connection, choose Install official CLI, then Connect account. Sign-in is completed in the browser. The CLI download is fetched from proton.me and verified against Proton's published SHA-512 checksum before installation.

Run From Source

Start the app from source:

dotnet run --project .\ZakSync\ZakSync.csproj

Build And Test

dotnet build .\ZakSync.slnx --configuration Release
dotnet run --project .\ZakSync.Tests\ZakSync.Tests.csproj --configuration Release

Create a small framework-dependent single-file build:

.\scripts\publish.ps1

The output is written to artifacts\win-x64. It requires the .NET 8 Desktop Runtime. The official Drive CLI is installed separately by ZakSync on first use so it can be updated independently.

Local Data

Configuration and sync snapshots are stored under %LOCALAPPDATA%\ZakSync. Snapshots contain relative paths, sizes, and timestamps; they contain no file contents or Proton credentials.

The official CLI keeps its own cache and account session in the locations documented by Proton. Removing a folder from ZakSync leaves all remote files untouched.

About

Selective Proton Drive sync for Windows with Git-style exclusion rules

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages