Skip to main content

Create exact, self-contained, reproducible project snapshots including git, caches, configs, and environment artifacts.

Project description

projectclone logo

PyPI version Python Wheel Release

Build status Codecov Test Coverage Code style: black Ruff Security

Downloads OS Python Versions

License: MIT

Docs

projectclone 🧬

Exact, reproducible, full-state project snapshots — including git, caches, env artifacts & symlinks


🚀 Overview

projectclone creates exact, faithful, self-contained snapshots of your project directory, including:

✔ Source code
.git repo & history
✔ Virtualenvs & caches (unless excluded)
✔ File timestamps, metadata, symlinks
✔ Configs, logs, local DBs
✔ Environment-specific state

This enables true reproducibility and safe rollback points across environments and devices.

Why this tool?

For developers who need guaranteed restorable project states, across:

  • Major refactors
  • Release checkpoints
  • Deployment backups
  • Research environments
  • Offline disaster recovery
  • CI/CD artifact capture
  • Termux/mobile development
  • Reproducible experiments

Think:
git commit + tar + rsync --link-dest + atomic backup discipline
— in one tool.


🔗 Restore tool

For restoring projectclone backups, use its companion tool:

👉 projectrestore

Tool Responsibility
projectclone Create state snapshots (non-destructive)
projectrestore Apply snapshots safely (atomic & secure)

This design keeps the backup tool safe, focused, and non-destructive — while giving the restore tool full security hardening and atomic restore semantics.


✨ Features

Feature Description
Full directory clone Exact deep copy with metadata
Archive mode .tar.gz with optional SHA-256 manifest
Incremental mode Hard-link dedup snapshots (like Time Machine / Borg)
Atomic safety Temp staging → atomic move → rollback on fail
Cross-filesystem safe Intelligent move vs copy fallback
Dry-run mode Preview without modifying anything
Rotation Keep only the last N snapshots
Exclude filters Glob / substring file exclusion
Progress UI Live counters and size reporting
Termux ready Works on Android + proot Ubuntu

📦 Installation

🐍 Standard install

pip install projectclone

📱 Termux / Android

pkg install rsync proot-distro
pip install projectclone


---

🔧 Usage Examples

Basic backup

projectclone backup_1k_tests

Creates:

/sdcard/project_backups/2025-02-03_172501-myproject-backup_1k_tests/


---

Archive mode

projectclone release_v1 --archive

Produces:

release_v1.tar.gz
release_v1.tar.gz.sha256


---

Incremental backup (deduplicated snapshots)

projectclone checkpoint --incremental


---

Exclude files

projectclone nightly --exclude __pycache__ --exclude .mypy_cache


---

Retain last 5 backups

projectclone stable --keep 5


---

Dry-run safety preview

projectclone test --dry-run


---

Full help

projectclone --help


---

🛠 Options Summary

Flag	Meaning

--archive	Create .tar.gz archive
--incremental	Hard-linked incremental mode
--manifest	Size manifest
--manifest-sha	Per-file SHA-256 manifest
--exclude	Exclude patterns
--dest DIR	Custom destination
--dry-run	Preview, no writes
--symlinks	Preserve symlinks
--keep N	Keep only last N backups
--yes	Auto-confirm operations
--verbose	Debug logging



---

🔐 Safety Guarantees

Atomic staging  atomic final move

Secure cleanup on failure

Cross-device move fallback

Drops setuid/setgid bits

Tight log permissions (chmod 600 where supported)

Non-destructive: never overwrites directories



---

📁 Default Paths

Platform	Location

Linux	~/project_backups
Termux	/sdcard/project_backups



---

🧪 Development

pip install -e .[dev]
pytest -v


---

📜 License

MIT  open source & production-friendly.


---

🤝 Contributing

Ideas & PRs welcome  especially around:

Compression tuning (zstd / lz4)

Remote sync (SSH / S3 / GDrive)

Fuse mounts / stream extraction

Config file support



---

⭐ Support

If this tool protects your work, please ⭐️ the repo  your support drives development.

git clone https://github.com/dhruv13x/projectclone


---

🧠 Author

Dhruv
Mobile-first DevOps explorer | Rust & Python | Cloud | Termux power-user


---

🧩 Roadmap

.projectcloneignore

zstd / lz4 compression

Remote targets (SSH / S3 / GDrive)

Encrypted archives

GUI wrapper (Android & Desktop)


> Restore is intentionally delegated to
projectrestore  secure, atomic, rollback-safe recovery




---

💬 Final Word

> Code evolves  backups must keep up.
Restore safely  with tools designed for it.



With projectclone, every project state becomes portable, reproducible, and future-proof.

Clone. Freeze. Protect. Restore via projectrestore.


---

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

projectclone-1.0.0.tar.gz (25.9 kB view details)

Uploaded Source

Built Distribution

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

projectclone-1.0.0-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file projectclone-1.0.0.tar.gz.

File metadata

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

File hashes

Hashes for projectclone-1.0.0.tar.gz
Algorithm Hash digest
SHA256 47d7600b04e8ac8251db610ce18aece7ba37f850e009658813fa345027b95265
MD5 06f1d32ba4f95223676834e6efd4be83
BLAKE2b-256 56ab21aa2c97663ac92715a320e479c05e894a93864de97c99214eedabc0be38

See more details on using hashes here.

Provenance

The following attestation bundles were made for projectclone-1.0.0.tar.gz:

Publisher: publish.yml on dhruv13x/projectclone

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

File details

Details for the file projectclone-1.0.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for projectclone-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d12cd82fbf375ebf0b881ea5a717aaccc997d8e0285b3828ed69e7fc0fe882d7
MD5 00b6f2c90711a20b861d0d2eb02c4c21
BLAKE2b-256 b22b4fe8b13554bc32cfd2a601a91408ee313beb14d6e675c1c20c2152bed95c

See more details on using hashes here.

Provenance

The following attestation bundles were made for projectclone-1.0.0-py3-none-any.whl:

Publisher: publish.yml on dhruv13x/projectclone

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