Skip to main content

🌀 AeonSync

CI/CD License Python Version

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:

  1. Clone the repository:
    git clone https://github.com/hyperb1iss/aeonsync.git
    cd aeonsync
    
  2. Install Poetry if you haven't already: pip install poetry
  3. Install dependencies: poetry install
  4. 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:

  1. Fork the repository
  2. Create a new branch: git checkout -b feature-branch-name
  3. Make your changes and commit them: git commit -m 'Add some feature'
  4. Push to the branch: git push origin feature-branch-name
  5. 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)

Source distribution for aeonsync 0.2.0
File Size Uploaded
aeonsync-0.2.0.tar.gz 32.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aeonsync 0.2.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page