Repository navigation
V0.1.0
Date: August 31, 2025.
Synopsis: First beta release of Rusty-Sync, cloud storage alternative.
Objective
The objective of this software is to allow file synchronization between Windows and Linux while maximizing performance and usability. This project, unlike OneDrive, does not use virtual paths, constantly reinstall itself, or perform other actions without user input. Furthermore, this software emulates git commands, something every developer is familiar with.
Update Synopsis
This update brings a beta version of this product to Windows and Linux. The full capabilities of this software are listed in the capabilities section; a synopsis of these will be listed here. Rusty-sync allows users to sync files through the cloud between different machines without much hassle.
Capabilities
- Cross-Platform Compatibility: Full support for Windows and Linux operating systems
- MinIO Object Storage Integration: Seamless integration with MinIO backend for cloud storage operations
- Git Repository Detection and Handling: Intelligent detection and proper handling of Git repositories during sync
- Intelligent File Change Detection: Advanced algorithms to detect file modifications and sync only changed content
- CLI Interface for Automation: Command-line interface designed for easy scripting and automation workflows
- Git-Like Command Structure: Familiar commands (
init,push,pull,clone,remote,status) for developers - Interactive Configuration Management: User-friendly setup and management of MinIO server configurations
- Bucket Auto-Detection: Smart detection of bucket associations for streamlined operations
- Secure Credential Storage: Safe storage of MinIO credentials in user configuration files
- Multiple Installation Methods:
- Windows: Automated installer with setup wizard
- Linux: Debian package (.deb) and portable tar.gz archives
- Python Environment Management: Automatic Python virtual environment setup for MinIO operations
- Cross-Directory Operations: Ability to sync from any directory with bucket association tracking
- File Tree Serialization: JSON-based file structure tracking for efficient sync operations
- Portable Package Distribution: Self-contained packages with auto-install scripts for easy deployment
- Production-Ready Packaging: Professional distribution with proper dependency management and security considerations
Pre-Requisites
System Requirements
Operating Systems
- Linux: Ubuntu 18.04+, Debian 10+, or compatible distributions
- Windows: Windows 10/11 (64-bit)
Core Dependencies
Required for All Platforms
- Python: Version 3.7 or higher
- Used for MinIO backend operations
- Virtual environment support required
- MinIO Server: Self-hosted or cloud MinIO instance
- Compatible with any S3-compatible object storage
- Server credentials (access key, secret key, endpoint URL)
Linux Specific
- System packages (auto-installed with .deb package):
python3andpython3-pippython3-venvfor virtual environment support- Standard Linux utilities (
curl,tar,bash)
Windows Specific
- Python for Windows: 3.7+ with pip support
- PowerShell: 5.1+ (included in Windows 10/11)
- Administrator privileges: Required for initial installation
Installation Prerequisites
For Debian Package (.deb)
# Update package lists
sudo apt update
# Install required dependencies
sudo apt install python3 python3-pip python3-venv curlFor Portable tar.gz Package
# Ensure Python 3.7+ is installed
python3 --version
# Verify pip is available
python3 -m pip --versionFor Windows Installer
- Download and install Python 3.7+ from python.org
- Ensure Python and pip are added to system PATH
- Run installer as Administrator
Network Requirements
- Internet connectivity for MinIO server communication
- Firewall access to MinIO server endpoint (typically port 9000 or 443 for HTTPS)
- DNS resolution for MinIO server hostname (if using domain names)
Storage Requirements
- Disk space: Minimum 100MB for application installation
- Additional space: Depends on files being synchronized
- MinIO server: Adequate storage space for synchronized files
Optional Dependencies
- Git: For enhanced repository detection and handling
- tar/xz-utils: For compressed archive support (Linux)
- PowerShell ISE: For advanced Windows configuration (optional)
Developer's Note
I built this project to have a single location where my files for school could be stored. So no matter whether I boot Windows or Linux on my laptop, I am able to be productive. This software isn't perfect—it's only just the beginning—but I have really high hopes for this project :). Thank you so much for reading through this; it means a lot to me.
What's Next?
- GUI for accessibility
- I need to find a GUI library for a language and learn it. I know EGUI for Rust but it was terrible to work with. I also know Tkinter in Python but I don't want to bloat this project.
- Multithreading
- Not sure when this project will be fully multithreaded, I'm not confident in my abilities to do it properly. Furthermore, this software is already fast enough and the main bottleneck is internet, not processing.
- Full-Bucket Management
- Ability to delete, rename, and control buckets on the MinIO server
- CI/CD
- Use GitHub Actions to constantly upload new releases. Probably not fully automated—I like making these patch notes; it's fun and forces me to interact with my product.
Installation/Setup Instructions
Linux
Debian and Ubuntu
- Download the .deb package
- Install the .deb package
sudo apt install ./rusty-sync-example.deb- Replace "rusty-sync-example.deb" with the proper filename
- Ensure proper installation
rusty-sync --help- An output with example usages should be present
- If not, the installation wasn't successful
- Configure rusty-sync
rusty-sync config- NOTE: YOU NEED A MINIO SERVER FOR THIS SOFTWARE
- Select "1" to add a MinIO server
- Follow the steps
- Your access key is your username and the secret is your password!
- Test connection
rusty-sync remotes- List available remotes; this tests the connection to the database.
- Start Syncing!
Other Distros
- Install the tar package
- Extract it
- Follow installation steps
- Ensure proper installation
rusty-sync --help- An output with example usages should be present
- If not, the installation wasn't successful
- Configure rusty-sync
rusty-sync config- NOTE: YOU NEED A MINIO SERVER FOR THIS SOFTWARE
- Select "1" to add a MinIO server
- Follow the steps
- Your access key is your username and the secret is your password!
- Test connection
rusty-sync remotes- List available remotes; this tests the connection to the database.
- Start Syncing!
Windows
- Install the setup wizard
- Run setup wizard and follow steps
- After installation you might need to restart your PC
- Ensure proper installation
rusty-sync --help- An output with example usages should be present
- If not, the installation wasn't successful
- Configure rusty-sync
rusty-sync config- NOTE: YOU NEED A MINIO SERVER FOR THIS SOFTWARE
- Select "1" to add a MinIO server
- Follow the steps
- Your access key is your username and the secret is your password!
- Test connection
rusty-sync remotes- List available remotes; this tests the connection to the database.
- Start Syncing!
Final Note
Thank you so much for your interest in this project. I will add new features and abilities to this project throughout the year. Read the "What's Next?" section for potential new features.
Thanks again and have a good day!!
:)