Skip to main content

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


Download files

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

Source Distribution

beastcp-1.0.1.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

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

beastcp-1.0.1-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

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

Hashes for beastcp-1.0.1.tar.gz
Algorithm Hash digest
SHA256 038ee627c6f51d737463374233a8c334e04c5cb0728694f713a43c1958a2f72c
MD5 47483344078544230a6d723ad32b7c9a
BLAKE2b-256 856d817b1656ea93a94746facf321d4aec73e176c799746dd3fa156f12d4b911

See more details on using hashes here.

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

Hashes for beastcp-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f6718d628034cfb4a9243819d27a42f8f2e2fc4c7ef3957352f2ad1ff3f8facb
MD5 02b4d569ce74297b67d3238f3a1f0356
BLAKE2b-256 fda57d5c70712aa5a6b56ed9686e93815f6d94b8fdc3e92f6a2e98cfabfe7246

See more details on using hashes here.

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