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.2.tar.gz (4.0 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.2-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

Details for the file beastcp-1.0.2.tar.gz.

File metadata

  • Download URL: beastcp-1.0.2.tar.gz
  • Upload date:
  • Size: 4.0 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.2.tar.gz
Algorithm Hash digest
SHA256 1d46e01e6fa2c76b4c7aab004ef7c70e2f4ee2d1121ae78533e7dc5d62c723d7
MD5 32d354c7d4052111cc0923e75cf1c396
BLAKE2b-256 b0886d82a6bd73fbe3cc532715a03f49b7ee66370915cffa4c37f570a72daab4

See more details on using hashes here.

File details

Details for the file beastcp-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: beastcp-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 4.3 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0e3653d881431a72321ef0c9d695b64d83c8527b037d46a6e082d4ae4312f2bc
MD5 fd8bca8ec6ce9b888b0cea04207b6f32
BLAKE2b-256 c26901204e0b98eb8d5873e1876abb84c868b3039cafa9da0f94dd55eee936af

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