Syncthing
Open source continuous file synchronization
Alternative to: dropbox, google drive, onedrive, resilio sync
v2.0.0-rc.18
2025-05-29Major 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.
-
Deleted items are no longer kept forever in the database, instead they are forgotten after six months. If your use case require deletes to take effect after more than a six 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.
What’s Changed
Fixes
- fix(db): handle large numbers of blocks in update by @calmh in https://github.com/syncthing/syncthing/pull/10025
- fix(syncthing): make directory flags global for all commands by @calmh in https://github.com/syncthing/syncthing/pull/10028
- fix(sqlite): apply options by @pixelspark in https://github.com/syncthing/syncthing/pull/10049
- fix(db): version vector serialisation :( by @calmh in https://github.com/syncthing/syncthing/pull/10050
- fix(model): loop-break regression while block copying in puller by @imsodin in https://github.com/syncthing/syncthing/pull/10069
- fix(model): close fd immediately in copier by @imsodin in https://github.com/syncthing/syncthing/pull/10079
- fix(model): use same folder first in copier by @imsodin in https://github.com/syncthing/syncthing/pull/10093
- fix(config): deep copy configuration defaults (fixes #9916) by @hazemKrimi in https://github.com/syncthing/syncthing/pull/10101
- fix(config): mark audit log options as needing restart (fixes #10099) by @marbens-arch in https://github.com/syncthing/syncthing/pull/10100
- fix(model): correct bufferpool handling; simplify by @calmh in https://github.com/syncthing/syncthing/pull/10113
- fix(versioner): fix perms of created folders (fixes #9626) by @ashishbhate in https://github.com/syncthing/syncthing/pull/10105
- fix(syncthing): ensure both config and data dirs exist at startup (fixes #10126) by @calmh in https://github.com/syncthing/syncthing/pull/10127
- fix(gui): update
uncamel()to handle strings like ‘IDs’ (fixes #10128) by @luckman212 in https://github.com/syncthing/syncthing/pull/10131 - fix(protocol): avoid deadlock with concurrent connection start and close by @calmh in https://github.com/syncthing/syncthing/pull/10140
Features
- feat(gui): close a modal when pressing ESC after switching modal tabs (fixes #9489) by @hazemKrimi in https://github.com/syncthing/syncthing/pull/10092
- feat: add
syncthing debug database-statisticscommand by @calmh in https://github.com/syncthing/syncthing/pull/10117
Other
- chore: remove abandoned next-gen-gui experiment by @calmh in https://github.com/syncthing/syncthing/pull/10004
- chore: remove weak hashing which does not pull its weight by @calmh in https://github.com/syncthing/syncthing/pull/10005
- chore: switch database engine to sqlite (fixes #9954) by @calmh in https://github.com/syncthing/syncthing/pull/9965
- chore: harmonise command line flags by @calmh in https://github.com/syncthing/syncthing/pull/10007
- chore(db): increase journal limit to 64MiB by @bt90 in https://github.com/syncthing/syncthing/pull/10022
- chore: forget deleted files older than six months (fixes #6284) by @calmh in https://github.com/syncthing/syncthing/pull/10023
- chore(db): use shorter read transactions and periodic checkpoint for smaller WAL by @calmh in https://github.com/syncthing/syncthing/pull/10027
- chore: configurable delete retention interval by @calmh in https://github.com/syncthing/syncthing/pull/10030
- chore(db): fix debug logging by @bt90 in https://github.com/syncthing/syncthing/pull/10033
- chore(db): buffer pulled files for smaller WAL by @calmh in https://github.com/syncthing/syncthing/pull/10036
- chore(db): use one SQLite database per folder by @calmh in https://github.com/syncthing/syncthing/pull/10042
- chore(model): delay starting a pull while there are incoming index updates by @calmh in https://github.com/syncthing/syncthing/pull/10041
- chore(syncthing): remove “default” folder concept by @calmh in https://github.com/syncthing/syncthing/pull/10068
- chore(syncthing): ensure migrated database is closed before exiting by @xjtdy888 in https://github.com/syncthing/syncthing/pull/10076
- chore(db, model): simplify per hash DB lookup in copier by @imsodin in https://github.com/syncthing/syncthing/pull/10080
- chore(model): refactor copier for more flatness by @imsodin in https://github.com/syncthing/syncthing/pull/10094
- chore(gui): add Serbian (sr) translation template by @acolomb in https://github.com/syncthing/syncthing/pull/10116
- build: reactivate golangci-lint by @calmh in https://github.com/syncthing/syncthing/pull/10118
- chore: move golangci-lint & meta to separate PR-only workflow by @calmh in https://github.com/syncthing/syncthing/pull/10119
- refactor: use slices.Contains to simplify code by @pullmerge in https://github.com/syncthing/syncthing/pull/10121
- build: process for automatic release tags by @calmh in https://github.com/syncthing/syncthing/pull/10133
- refactor: use slices package for sort by @mrclmr in https://github.com/syncthing/syncthing/pull/10132
- build: upgrade setup-zig action by @calmh in https://github.com/syncthing/syncthing/pull/10134
- refactor: use slices package for sorting by @mrclmr in https://github.com/syncthing/syncthing/pull/10136
- docs: general notes about v2 coming by @calmh in https://github.com/syncthing/syncthing/pull/10135
- build: add labeler workflow for PRs by @calmh in https://github.com/syncthing/syncthing/pull/10143
- build: properly propagate build tags to Debian build by @calmh in https://github.com/syncthing/syncthing/pull/10144
New Contributors
- @hazemKrimi made their first contribution in https://github.com/syncthing/syncthing/pull/10092
- @pullmerge made their first contribution in https://github.com/syncthing/syncthing/pull/10121
- @ashishbhate made their first contribution in https://github.com/syncthing/syncthing/pull/10105
- @mrclmr made their first contribution in https://github.com/syncthing/syncthing/pull/10132
Full Changelog: https://github.com/syncthing/syncthing/compare/v1.29.6…v2.0.0-rc.18