SimpleFTPSync is a community continuation of the original plugin for synchronizing local files or folders to remote FTP, FTPS, or SFTP servers.
Current public revival release: 1.2.0
This project was reconstructed from the released SimpleFTPSync-1.1.jar after the original repository disappeared.
The recovered source has already been cleaned up to:
- restore a normal Maven project structure
- support
sync-foldersas a proper YAML list - keep compatibility with the older section-style
sync-folderslayout - upload directories recursively instead of treating everything like a single file
- restart the scheduler when
/sfs reloadis used - allow a manual sync run with
/sfs run - skip unchanged files between sync runs using a local state file
- support per-entry include and exclude patterns
- use configurable checksum-based change detection
- default SFTP behavior to strict known-host verification
/sfs reloadreloads the config and restarts the scheduled sync task/sfs runstarts an immediate asynchronous sync
- Build or take the ready-made plugin jar and place it in your server's
pluginsfolder. - Start the server once so SimpleFTPSync creates its config folder.
- Stop the server and open
plugins/SimpleFTPSync/config.yml. - Notice that the default config is intentionally inactive until you fill it in.
- Set
sync-typetoFTP,FTPS, orSFTP. - Fill in the matching server section with your host, port, username, password, and base
remote-path. - Add one or more entries under
sync-foldersfor the files or folders you want to upload. Entryremote-pathvalues may be relative to the selected protocol base path, which is usually the easiest setup. - Set
sync-intervalto the number of seconds between sync runs. - Leave
sync-only-changed: trueunless you intentionally want to re-upload everything every cycle. - Start the server again.
- Run
/sfs runin game or in the console to test immediately. - If you change the config later, run
/sfs reloadto apply it without restarting the server.
For SFTP, strict host verification is enabled by default.
- Connect to your SFTP server from a trusted machine and capture its host key into a
known_hostsfile. - Put that file at the path configured by
sftp.known-hosts-file. - Keep
sftp.strict-host-key-checking: true.
If you disable strict host key checking, the plugin will still work, but it is less secure because it will trust any host that answers at that address.
Use src/main/resources/config.yml as the template. The preferred structure is:
sync-interval: 300
sync-type: "SFTP"
sync-on-startup: false
sync-only-changed: true
change-detection: "CHECKSUM"
sftp:
remote-path: "/backups"
sync-folders:
- local-path: "world"
remote-path: "world"
changed-only: true
exclude:
- "**/session.lock"
- local-path: "plugins/ExamplePlugin/data"
remote-path: "example-plugin"
include:
- "**/*.yml"local-path plus the selected protocol's remote-path is still supported as a legacy single-entry fallback.
If you prefer, sync-folders[].remote-path can still be a fully absolute remote destination.
This project uses Maven and targets Java 8 source compatibility.
The project metadata is prepared for Spigot 1.21.11-R0.2-SNAPSHOT.
If you are building offline with build.ps1, it will use the newest cached Spigot API snapshot jar available in your local .m2 repository.
Dependencies:
- Spigot API
1.21.11-R0.2-SNAPSHOT commons-netjsch
Once Maven is installed, a typical build command is:
mvn packageThis workspace also includes build.ps1, which builds a fresh shaded jar without Maven by:
- compiling the recovered source against the locally cached Spigot API jar
- reusing the bundled FTP/SFTP libraries from the original
SimpleFTPSync-1.1.jar - packaging the result as
build/SimpleFTPSync-1.2.0.jar
Run it with:
.\build.ps1This repository starts with a recovered 1.1 snapshot commit and then continues with maintenance and feature work on top of that recovered base.
Original public listing:
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Release checklist: RELEASING.md
- Windows SFTP setup: WINDOWS_SFTP_SETUP.md