🌀 AeonSync
A powerful and flexible remote backup tool for developers and system administrators
Key Features • Getting Started • Usage • Advanced Topics • Contributing
✨ Key Features
AeonSync redefines remote backups with its powerful feature set:
- 🔄 Flexible Backup Modes: Daily snapshots or multiple backups per day
- 🔗 Efficient Incremental Backups: Leverages rsync's
--link-destfor optimal storage use - 🔐 Secure Remote Syncing: Rock-solid SSH encryption for data transfer
- ⏱️ Smart Retention Policies: Automatic management of your backup history
- 🕰️ Version Control: Restore specific file versions with ease
- 🖥️ Intuitive CLI: Seamless command-line experience powered by Typer
- 📊 Rich Metadata: Comprehensive insights into each backup operation
🚀 Getting Started
Requirements
- Python 3.12+
- SSH access to remote server/NAS
- rsync on local and remote systems
Installation
pip install aeonsync
📘 Usage
Basic command structure:
# Perform a backup (multiple per day by default)
aeon sync --remote user@host:/path/to/backups
# Restore a file
aeon restore [OPTIONS] FILE [DATE]
# List available backups
aeon list-backups
Sync Command
The sync command is used to create backups:
aeon sync [OPTIONS]
Options:
--remote TEXT: Remote destination in the format [user@]host:path--source PATH: Source directories to backup (can be specified multiple times)--retention INTEGER: Number of days to retain backups--dry-run: Perform a dry run without making changes--verbose: Enable verbose output--daily: Create only one backup per day (overrides default behavior)
Restore Command
The restore command provides functionality for file recovery:
aeon restore [OPTIONS] [FILE] [DATE]
Options:
--output PATH: Output directory for restored file or directory--interactive: Use fully interactive mode for restore--diff: Show diff between local and backup versions--preview: Show a preview of the file before restoring
List Backups Command
To view available backups:
aeon list-backups [OPTIONS]
This command displays a detailed list of all backups, including dates, file counts, and total sizes.
🔧 Advanced Topics
⚙️ Configuration
AeonSync can be configured using command-line options or by modifying the configuration file:
hostname = "myworkstation"
remote_address = "user@nas.local"
remote_path = "/volume1/backups"
remote_port = 22
retention_period = 30
source_dirs = ["/home/user/projects", "/var/www", "/etc"]
exclusions = [".cache", "*/node_modules", "*.tmp", ".venv"]
ssh_key = "/home/user/.ssh/id_rsa"
verbose = False
log_file = "/home/user/.local/share/aeonsync/aeonsync.log"
default_daily_backup = False # Set to True to allow only one backup per day
📁 Remote Structure
AeonSync organizes your backups as follows:
/volume1/backups/
└── myworkstation/
├── latest -> 2024-03-15
├── 2024-03-15/
├── 2024-03-14/
├── 2024-03-13.1/
├── 2024-03-13/
└── ...
- Each backup is stored in a date-stamped directory
- Multiple backups per day append a sequence number (e.g.,
2024-03-13.1) - The
latestsymlink always points to the most recent backup
🌟 Use Cases
AeonSync can be used in various scenarios:
Home Office Backup
Protect your projects and documents with daily backups to your Synology NAS:
aeon sync --remote user@synology:/volume1/backups --source /home/user/projects --source /home/user/documents
Web Server Backup
Safeguard your web applications and databases:
aeon sync --remote backupuser@remote-server:/backups --source /var/www --source /var/lib/mysql
Developer Workstation
Keep your code safe with multiple backups per day:
aeon sync --remote user@dev-server:/backups --source /home/dev/workspace
Small Business Server
Comprehensive backup solution for critical business data:
aeon config --hostname business-server --remote-address nas.local --remote-path /volume1/business-backups
aeon sync --source /home/shared --source /var/financial-data --retention 90
🛠️ Development
To set up the development environment:
- Clone the repository:
git clone https://github.com/hyperb1iss/aeonsync.git cd aeonsync
- Install Poetry if you haven't already:
pip install poetry - Install dependencies:
poetry install - Activate the virtual environment:
poetry shell
To run tests:
pytest
To run linting checks:
poetry run lint
👥 Contributing
Contributions to AeonSync are welcome! Here's how you can contribute:
- Fork the repository
- Create a new branch:
git checkout -b feature-branch-name - Make your changes and commit them:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature-branch-name - Submit a pull request
Please ensure your code adheres to the project's style guide (we use Ruff for formatting) and passes all tests.
📄 License
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.
📚 Documentation • 🐛 Report Bug • 💡 Request Feature
Created by Stefanie Jane 🌠
If you find this project useful, buy me a Monster Ultra Violet! ⚡️
Metadata
Release files for aeonsync 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aeonsync-0.2.0.tar.gz | 32.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aeonsync-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 65.7 kB
Release files / aeonsync-0.2.0.tar.gz
| Download URL | aeonsync-0.2.0.tar.gz |
|---|---|
| Size | 32.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
73b66415975f63032694abf65d6611662c80ec6fb547c6dd841068d0672da701
|
|
BLAKE2b-256 checksum How to use checksums |
2791d79f11f2cfc7988a6f90ae7d495058767e584d473f91fa6097b498568cae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.4 CPython/3.12.7 Linux/6.8.0-1015-azure
|
Release files / aeonsync-0.2.0-py3-none-any.whl
| Download URL | aeonsync-0.2.0-py3-none-any.whl |
|---|---|
| Size | 33.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
296d18858492fe901ba50a2b6e0ef18095d2346e710654848e4e3938f91fd08e
|
|
BLAKE2b-256 checksum How to use checksums |
0f1e1ccb0d76fb979a101efd42f8a13be5c5a95f3dc36ad4040c400aede728e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.4 CPython/3.12.7 Linux/6.8.0-1015-azure
|