Skip to main content

Time Machine-style personal backup orchestrated by Python & uv

Project description

Timeless-Py ⏳

Snapshot what matters, remember how to rebuild the rest.

Time Machine-style personal backup orchestrated by Python & uv.

Overview

Timeless-Py is a modern backup solution designed for macOS, providing:

  • Hourly, daily, weekly deduplicated snapshots of user data
  • Re-install manifest generation for applications and system packages
  • Engine-agnostic approach with Restic, Borg, and Kopia support
  • Client-side encryption (AES-256) with keys stored in Keychain
  • Simple 10-minute setup: brew install timeless-pytimeless init --wizard

Features

  • Snapshot Management: Create, browse, and restore backups with ease
  • Retention Policies: Define flexible retention policies (hourly/daily/weekly/monthly/yearly)
  • Manifest Generation: Auto-generate reinstall manifests for your Mac software
  • Built-in Security: Fully encrypted snapshots with secure key management
  • FUSE Integration: Mount snapshots as regular volumes for easy browsing
  • Exclude Patterns: Specify patterns for files and directories to exclude from backups

M1 Milestone Features

  • Restic Engine Integration: Full integration with Restic for backup, restore, snapshot management, and repository operations
  • Retention Policy DSL: Define custom retention policies in YAML to automatically manage snapshot retention
  • Exclude Patterns Support: Exclude specific files or directories from backups using glob patterns
  • Comprehensive CLI Interface: User-friendly command-line interface for all operations

Installation

# Coming soon - once published
brew install timeless-py

# Initialize with wizard
timeless init --wizard

Usage

# Create a backup
timeless backup

# Mount latest snapshot
timeless mount

# Restore a file or directory
timeless restore <snapshot> <path>

# List available snapshots
timeless snapshots

# Verify repository integrity
timeless check

# Reinstall software from manifests
timeless brew-replay

Development

This project requires Python 3.11 or higher.

# Setup development environment
git clone https://github.com/rappdw/timeless.git
cd timeless
uv pip install -e ".[dev]"

# Run tests
pytest

# Run linting and type checks
ruff check .
black --check .
isort --check .
mypy --strict .

License

This project is licensed under Apache-2.0. See LICENSE file for more details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

timevault-0.2.0.tar.gz (39.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

timevault-0.2.0-py3-none-any.whl (28.7 kB view details)

Uploaded Python 3

File details

Details for the file timevault-0.2.0.tar.gz.

File metadata

  • Download URL: timevault-0.2.0.tar.gz
  • Upload date:
  • Size: 39.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for timevault-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5350c0ea04f807ec78b11a002ba9137c9d6637f1affad07166167e117d946ba9
MD5 a83fa2f1ffefa795e93057ce84914a7a
BLAKE2b-256 9cf930330ae27f6d0d2ec770e122c1fdf2ed425ed060a2baf97339ecb43b20ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for timevault-0.2.0.tar.gz:

Publisher: publish.yml on rappdw/timeless

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file timevault-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: timevault-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 28.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for timevault-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b9db8c152c4919a258fec28390c3ae68663baf79dfd2848287961ad682eda2dd
MD5 28c760c02f51800f3803e1323b5ff4da
BLAKE2b-256 81849e3996f75084be014a1392c89281f7b6a34ed1302c29ab8eccecc4796530

See more details on using hashes here.

Provenance

The following attestation bundles were made for timevault-0.2.0-py3-none-any.whl:

Publisher: publish.yml on rappdw/timeless

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page