A simple but powerful rsync backup tool
Project description
🌀 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-dest
for 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
latest
symlink 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! ⚡️
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file aeonsync-0.2.0.tar.gz
.
File metadata
- Download URL: aeonsync-0.2.0.tar.gz
- Upload date:
- Size: 32.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.12.7 Linux/6.8.0-1015-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73b66415975f63032694abf65d6611662c80ec6fb547c6dd841068d0672da701 |
|
MD5 | 521e89d1b33ba2cfab5170010ced75a1 |
|
BLAKE2b-256 | 2791d79f11f2cfc7988a6f90ae7d495058767e584d473f91fa6097b498568cae |
File details
Details for the file aeonsync-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: aeonsync-0.2.0-py3-none-any.whl
- Upload date:
- Size: 33.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.12.7 Linux/6.8.0-1015-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 296d18858492fe901ba50a2b6e0ef18095d2346e710654848e4e3938f91fd08e |
|
MD5 | 69148ae5bdef236f9184ec3dd63b79b2 |
|
BLAKE2b-256 | 0f1e1ccb0d76fb979a101efd42f8a13be5c5a95f3dc36ad4040c400aede728e7 |