Skip to main content
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

Dhruv13x
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.


---

Metadata

Release files for projectclone 4.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for projectclone 4.0.1
File Size Uploaded
projectclone-4.0.1.tar.gz 68.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for projectclone 4.0.1
File Interpreter ABI Platform
projectclone-4.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 107.0 kB

Release files / projectclone-4.0.1.tar.gz

Download URL projectclone-4.0.1.tar.gz
Size 68.2 kB
Tags Source
SHA-256 checksum
How to use checksums
db40dc1dc907b809f25da5579e30289698883d9594f914171364499055ced25e
BLAKE2b-256 checksum
How to use checksums
0e1cc211fcff540e4501dc4c37c650ea08c2425fe36bccd203c31e26e4abc39a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 7, 2025.

Transparency log

Release files / projectclone-4.0.1-py3-none-any.whl

Download URL projectclone-4.0.1-py3-none-any.whl
Size 38.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
24ec11097df13bf09d1f3ae3b83efb48bc969df6d96a9ca433e7c94fa1c2c8a5
BLAKE2b-256 checksum
How to use checksums
b9eb13ae8c7be1b281264e5ec5090754c606556875e6042b1b6220389de9ae79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 7, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

4.0.1 This release

2 release files

3.6.0

2 release files

3.0.0

2 release files

1.0.0

2 release files

0.1.0

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