Create exact, self-contained, reproducible project snapshots including git, caches, configs, and environment artifacts.
Project description
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47d7600b04e8ac8251db610ce18aece7ba37f850e009658813fa345027b95265
|
|
| MD5 |
06f1d32ba4f95223676834e6efd4be83
|
|
| BLAKE2b-256 |
56ab21aa2c97663ac92715a320e479c05e894a93864de97c99214eedabc0be38
|
Provenance
The following attestation bundles were made for projectclone-1.0.0.tar.gz:
Publisher:
publish.yml on dhruv13x/projectclone
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
projectclone-1.0.0.tar.gz -
Subject digest:
47d7600b04e8ac8251db610ce18aece7ba37f850e009658813fa345027b95265 - Sigstore transparency entry: 699889161
- Sigstore integration time:
-
Permalink:
dhruv13x/projectclone@0e1c2443554c370bc20ea45acfb49f59f9aead57 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/dhruv13x
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0e1c2443554c370bc20ea45acfb49f59f9aead57 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d12cd82fbf375ebf0b881ea5a717aaccc997d8e0285b3828ed69e7fc0fe882d7
|
|
| MD5 |
00b6f2c90711a20b861d0d2eb02c4c21
|
|
| BLAKE2b-256 |
b22b4fe8b13554bc32cfd2a601a91408ee313beb14d6e675c1c20c2152bed95c
|
Provenance
The following attestation bundles were made for projectclone-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on dhruv13x/projectclone
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
projectclone-1.0.0-py3-none-any.whl -
Subject digest:
d12cd82fbf375ebf0b881ea5a717aaccc997d8e0285b3828ed69e7fc0fe882d7 - Sigstore transparency entry: 699889166
- Sigstore integration time:
-
Permalink:
dhruv13x/projectclone@0e1c2443554c370bc20ea45acfb49f59f9aead57 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/dhruv13x
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0e1c2443554c370bc20ea45acfb49f59f9aead57 -
Trigger Event:
push
-
Statement type: