Syncthing
Open source continuous file synchronization
Alternative to: dropbox, google drive, onedrive, resilio sync
v2.0.4-rc.1
2025-08-31Major changes in 2.0
-
Database backend switched from LevelDB to SQLite. There is a migration on first launch which can be lengthy for larger setups. The new database is easier to understand and maintain and, hopefully, less buggy.
-
The logging format has changed to use structured log entries (a message plus several key-value pairs). Additionally, we can now control the log level per package, and a new log level WARNING has been inserted between INFO and ERROR (which was previously known as WARNING…). The INFO level has become more verbose, indicating the sync actions taken by Syncthing. A new command line flag
--log-levelsets the default log level for all packages, and theSTTRACEenvironment variable and GUI has been updated to set log levels per package. The--verboseand--logflagscommand line options have been removed and will be ignored if given. -
Deleted items are no longer kept forever in the database, instead they are forgotten after fifteen months. If your use case require deletes to take effect after more than a fifteen month delay, set the
--db-delete-retention-intervalcommand line option or corresponding environment variable to zero, or a longer time interval of your choosing. -
Modernised command line options parsing. Old single-dash long options are no longer supported, e.g.
-homemust be given as--home. Some options have been renamed, others have become subcommands. All serve options are now also accepted as environment variables. Seesyncthing --helpandsyncthing serve --helpfor details. -
Rolling hash detection of shifted data is no longer supported as this effectively never helped. Instead, scanning and syncing is faster and more efficient without it.
-
A “default folder” is no longer created on first startup.
-
Multiple connections are now used by default between v2 devices. The new default value is to use three connections: one for index metadata and two for data exchange.
-
The following platforms unfortunately no longer get prebuilt binaries for download at syncthing.net and on GitHub, due to complexities related to cross compilation with SQLite:
- dragonfly/amd64
- illumos/amd64 and solaris/amd64
- linux/ppc64
- netbsd/*
- openbsd/386 and openbsd/arm
- windows/arm
-
The handling of conflict resolution involving deleted files has changed. A delete can now be the winning outcome of conflict resolution, resulting in the deleted file being moved to a conflict copy.
This release is also available as:
-
APT repository: https://apt.syncthing.net/
-
Docker image:
docker.io/syncthing/syncthing:2.0.4-rc.1orghcr.io/syncthing/syncthing:2.0.4-rc.1({docker,ghcr}.io/syncthing/syncthing:2to follow just the major version)
What’s Changed
Fixes
- fix(cmd): only start temporary API server during migration if it’s enabled by @pixelspark in https://github.com/syncthing/syncthing/pull/10284
- fix(model): consider MaxFolderConcurrency when calculating number of hashers by @tomasz1986 in https://github.com/syncthing/syncthing/pull/10285
- fix(model): consider number of CPU cores when calculating hashers on interactive OS (#10284) by @tomasz1986 in https://github.com/syncthing/syncthing/pull/10286
- fix(db): apply all migrations and schema in one transaction by @calmh in https://github.com/syncthing/syncthing/pull/10323
Other
- chore(db): adjust db bench name to improve benchstat grouping by @imsodin in https://github.com/syncthing/syncthing/pull/10283
- chore(db): cleanup DB in tests and remove OpenTemp by @imsodin in https://github.com/syncthing/syncthing/pull/10282
- build: use Go 1.24 tools pattern by @calmh in https://github.com/syncthing/syncthing/pull/10281
- chore(db): avoid rowid for blocks and blocklists by @bt90 in https://github.com/syncthing/syncthing/pull/10315
- refactor(db): slightly improve insert performance by @calmh in https://github.com/syncthing/syncthing/pull/10318
- chore(gui): use steps of 1024 KiB for bandwidth rate limits by @tomasz1986 in https://github.com/syncthing/syncthing/pull/10316
- chore(gui): use step of 3600 for versions cleanup interval by @tomasz1986 in https://github.com/syncthing/syncthing/pull/10317
- chore(db): benchmark output, migration blocks/s output by @calmh in https://github.com/syncthing/syncthing/pull/10320
- chore(db): update schema version in the same transaction as migration by @imsodin in https://github.com/syncthing/syncthing/pull/10321
- chore(db): migration for previous commits by @calmh in https://github.com/syncthing/syncthing/pull/10319
Full Changelog: https://github.com/syncthing/syncthing/compare/v2.0.3…v2.0.4-rc.1