File copy tool with integrity verification for DITs and backups (GUI + CLI)
Named after the Latin ferre (to carry) — built to transport your data with uncompromising integrity.
Warning
Disclaimer: Personal Project
I created this tool for my own use. I am not a professional software developer, and this project was built with the help of AI to explore certain workflows.
The code is provided "as is", without any warranties or guarantees. Use it at your own risk.
ferr is a utility designed to help ensure file integrity during transfers. It is intended for users who need to verify that files are copied correctly, such as Digital Imaging Technicians (DITs) or those managing backups. It uses cryptographic hashing to verify data and provides optional redundancy through PAR2. It is available as a Desktop GUI application and a Command-Line Interface.
ferr provides several tools to assist with data management and verification:
- Hashing: Files can be hashed during the copy process (
XXH64orSHA-256) to check for transfer errors. - Multiple Destinations: Supports copying from one source to up to 3 destinations.
- PAR2 Support: Can generate PAR2 files to assist with possible future data repair if corruption occurs.
- Desktop GUI: A cross-platform interface built with Tauri v2 and HTML/JS.
- Transfer History: Uses a local SQLite database to keep track of completed jobs.
- File Detection: Includes basic detection for various camera file formats.
- Integrity Certificates: Supports generating and verifying portable
.ferrcertfiles to document folder state and tracking history. - Logging: Generates timestamped subfolders (
_ferr_logs) containing job reports.
# Requires Rust 1.75+
git clone https://github.com/freddewitt/ferr
cd ferr
cargo install --path ferr-cliTo build the graphical application on macOS, you must compile the CLI as a sidecar:
# 1. Build the engine
cargo build --release -p ferr-cli
# 2. Copy to the Tauri binaries folder (Apple Silicon example)
cp target/release/ferr ferr-app/binaries/ferr-cli-aarch64-apple-darwin
# 3. Install Tauri v2 CLI
cargo install tauri-cli --version "^2.0.0"
# 4. Build the application
cd ferr-app
cargo tauri build
# The app bundle will be at: target/release/bundle/macos/ferr.app# Copy a folder and verify integrity (defaults to XXH64)
ferr copy /Volumes/SOURCE /Volumes/DEST
# Copy to two destinations with 5% PAR2 redundancy
ferr copy /Volumes/CARD /mnt/ssd1 --dest2 /mnt/ssd2 --par2 5You can generate portable certificates to document the state of a folder. These are useful for verifying data integrity across different systems. For a detailed technical explanation of how they work, see ferrcert.md.
- Create:
ferr cert create /MyData - Verify:
ferr cert verify /MyData/MyData.ferrcert /ReceivedData
Basic support for renaming files based on metadata during the copy process:
ferr copy /Volumes/A001 /RAID --camera --rename "{date}_{camera}_{clip}{ext}"Monitors a path for new mounts and starts a copy automatically:
ferr watch /Volumes --dest /mnt/backups --profile onsetferr is organized into several modules:
| Component | Description |
|---|---|
ferr-app |
GUI front-end. |
ferr-cli |
CLI interface. |
ferr-core |
Core logic and job management. |
ferr-cert |
Logic for generating and verifying integrity certificates. |
ferr-par2 |
Wrapper for PAR2 verification and repair. |
ferr-hash |
Hashing implementations. |
ferr-session |
Session management and SQLite storage. |
ferr-report |
Report generation (JSON and PDF). |
For more information on commands and options, see the:
Licensed under the MIT License. See LICENSE for details.
