A high-performance cp-like file copier with resume, verification, tqdm progress, and multi-threaded directory sync.
Project description
beastcp
beastcp is a high-performance file copying and synchronization utility written in Python.
It combines the familiar behavior of the Unix cp command with advanced features such as:
- Progress bars using
tqdm - Resume support for interrupted copies
- Hash verification for data integrity
- Multi-threaded copying for directories
- Automatic directory creation
- Safe and force-overwrite modes
- Efficient chunked I/O for large files
- Optional thread configuration and verification settings
beastcp is designed for users who frequently copy large files or datasets and want a reliable, observable, and tunable tool.
Features
File Copying
- Copies files of any size with a progress bar.
- Supports resuming partially copied files.
- Verifies file integrity using SHA-256 hashing.
Directory Copying
- Recursively copies entire directories.
- Uses multithreading to improve speed when copying many files.
- Creates destination directory structure automatically.
Resilience Features
- Resume mode prevents re-copying already-transferred data.
- Verification ensures the output matches the source exactly.
Command-Line Interface
- Customizable options via CLI flags.
- Compatible with Unix-like systems and Windows.
Installation
Install from PyPI:
pip install beastcp
This provides a command-line executable:
beastcp
Usage
Copy a file
beastcp source.bin /path/to/destination.bin
Copy a folder with custom number of threads
beastcp dataset/ /backup/dataset/ --threads 8
Force overwrite an existing destination
beastcp data.zip /backup/data.zip --force
Disable resume or verification
beastcp bigfile.iso /mnt/drive/ --no-resume --no-verify
Full CLI Reference
beastcp SRC DST [OPTIONS]
Options:
-t, --threads INTEGER Number of parallel copy threads (default: 4)
--no-resume Disable resume support
--no-verify Disable SHA-256 verification
-f, --force Allow overwriting the destination
--help Show this message and exit
Example
Copying a directory with progress indicators:
beastcp /data/archive/ /backup/archive/ --threads 6
Copying a very large file with verification disabled:
beastcp movie.mkv /media/storage/ --no-verify
How It Works
For file copying:
- Reads the source in fixed-size chunks (1 MB by default)
- Writes each chunk to the destination
- Updates a progress bar
- Optionally resumes from last written byte
- Optionally performs SHA-256 hash comparison
For directory copying:
- Scans files recursively
- Spawns multiple threads for parallel copying
- Uses the same file copying routine for each file
This design allows beastcp to efficiently copy both large singular files and many small files.
Project details
Release history Release notifications | RSS feed
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 beastcp-1.0.1.tar.gz.
File metadata
- Download URL: beastcp-1.0.1.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
038ee627c6f51d737463374233a8c334e04c5cb0728694f713a43c1958a2f72c
|
|
| MD5 |
47483344078544230a6d723ad32b7c9a
|
|
| BLAKE2b-256 |
856d817b1656ea93a94746facf321d4aec73e176c799746dd3fa156f12d4b911
|
File details
Details for the file beastcp-1.0.1-py3-none-any.whl.
File metadata
- Download URL: beastcp-1.0.1-py3-none-any.whl
- Upload date:
- Size: 4.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6718d628034cfb4a9243819d27a42f8f2e2fc4c7ef3957352f2ad1ff3f8facb
|
|
| MD5 |
02b4d569ce74297b67d3238f3a1f0356
|
|
| BLAKE2b-256 |
fda57d5c70712aa5a6b56ed9686e93815f6d94b8fdc3e92f6a2e98cfabfe7246
|