A command-line utility for syncing a local folder with a remote FTP server on every change of files or directories.
Report Bug
·
Request Feature
sftp-sync is a command-line utility for syncing a local folder with a remote FTP server on every change of files or directories.
- Continuous synchronization: Automatically syncs local changes to the remote FTP server whenever files or directories are added, modified, or deleted.
- Exclude paths: Allows you to exclude specific paths from being synced.
- Easy to use: Simple and intuitive command-line interface.
- Go 1.24.3 or higher installed on your system
- Access to an FTP server with valid credentials
Install the latest version directly from the repository:
go install github.com/capcom6/sftp-sync@latestThis will install sftp-sync to your $GOBIN directory. Make sure your $GOBIN is in your $PATH.
Download the pre-compiled binaries from the GitHub Releases page:
- Download the binary for your operating system and architecture
- Make the binary executable:
chmod +x sftp-sync
- Move it to a directory in your
$PATH:sudo mv sftp-sync /usr/local/bin/
If you prefer to build from source:
git clone https://github.com/capcom6/sftp-sync.git
cd sftp-sync
make buildThe binary will be available in the bin/ directory.
Run the sftp-sync command with the necessary options and arguments:
sftp-sync --dest=ftp://username:password@hostname:port/path/to/remote/folder \
--exclude=.git /path/to/local/folderDEBUG: When set to any value, enables debug mode (equivalent to--debugflag).
--debug: Enable debug mode (can also be set viaDEBUGenvironment variable).--version: Print version information.
--dest: The destination FTP server URL. It should follow the formatftp://username:password@hostname:port/path/to/remote/folder.--exclude: (Optional) Specifies paths or patterns to exclude from the synchronization process. You can specify multiple--excludeoptions to exclude multiple paths or patterns.
source: The local folder path to watch for changes (required positional argument).
The application uses structured error handling with specific exit codes:
0: Success - operation completed successfully1: Parameters Error - invalid command arguments or options2: Client Error - FTP client connection or operation failed3: Output Error - logging or output system failed4: Internal Error - unexpected internal error
- Support for patterns in the
--excludeoption. - Support of Secure FTP (SFTP) protocol.
- Improved error handling and error messages.
- Integration with Git for automatic syncing on commit or branch changes.
- Integration with Git for linking branch to remote server.
- Support for other remote protocols such as S3.
- Support for syncing specific file types or file name patterns.
- Preserve attributes (if available).
- Parallel sync in multiple threads.
- Batching events for more effective sync on frequently changes.
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open-source community a great place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion to improve this project, please fork the repository and open a pull request. You can also open an issue with the enhancement label.
If this project is useful to you, consider starring it.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the Apache License 2.0. See LICENSE for more information.
Project Link: https://github.com/capcom6/sftp-sync