#encryption #file-encryption #command-line-tool

app fecr

FerrumCrimper - A fast, Rust-powered CLI tool for efficient file management, compression, and archival with support for multiple formats and secure data handling

7 releases

new 0.0.7 Apr 11, 2025
0.0.6 Apr 11, 2025
0.0.5 Dec 29, 2024

#49 in Compression

Download history 405/week @ 2024-12-24 131/week @ 2024-12-31 75/week @ 2025-01-07 9/week @ 2025-01-14 5/week @ 2025-02-04 38/week @ 2025-02-11 3/week @ 2025-02-18 3/week @ 2025-02-25 1/week @ 2025-03-04 219/week @ 2025-04-08

219 downloads per month

GPL-2.0 license

1MB
702 lines

Rust

Rust Crates.io Total Downloads GitHub License

FerrumCrimper

A fast, Rust-powered CLI tool for efficient file management, compression, and archival with support for multiple formats and secure data handling.

Caution

This project is still in active development, use at your own risk! Single threaded only, multithreading support coming soon!

Installation 🦾

To install FerrumCrimper, you can either use binaries or build from source.

If you have cargo installed, simply run the command below to install FerrumCrimper on your system!

cargo install fecr

Be sure to check out or crates.io page here!

Looking For Pre-Built Binaries?

Currently, pre-built binaries are unavailable. If you can't use Crates.io, we suggest building from source following the instructions provided below.

Build From Source 🤓

  1. Ensure that you have Rust and Cargo installed. You can install Rust here.
  2. Clone the repository:
 git clone https://github.com/rockenman1234/ferrumcrimper.git
  1. Navigate to this folder using the cd command.
  2. If you have make installed, you may use the following command to compile binaries for your operating system. You may then place them in a directory included in your system’s PATH. Compiled binaries will be located under ./target/release/
make
  1. (Optional) If you do not have make installed, you can run the following commands yourself using cargo as a substitute:
cargo build --release --verbose
./target/release/fecr --help

Why Use FerrumCrimper? ℹ️

FerrumCrimper was started as a personal project by lead developers Alex and Alan (B.S. Computer Engineering students at Georgia Tech) to create a fast, efficient, and secure file management tool. The goal was to provide a simple command-line interface for compressing and extracting files while ensuring high performance and security. We also wanted to create a project that would sharpen our skills in Rust and provide a fun challenge!

FerrumCrimper is designed to provide efficient file management and compression with these benefits:

  • Speed and Performance: Built with Rust, FerrumCrimper delivers fast compression and extraction, optimized for low latency and efficient resource usage. It also supports threaded operation, enabling faster speeds by leveraging multiple cores for parallel processing.
  • Simple Command-Line Interface: FerrumCrimper’s straightforward CLI makes it easy to zip or unzip files with just a few commands.
  • Secure Data Handling: With strong Rust-based implementations, the tool ensures safe and secure handling of data throughout compression and archival processes.
  • Multi-Format Support: FerrumCrimper supports various file formats, making it a versatile tool for a variety of workflows.

Supported File Formats ⚙️

Note

This project is still in active development, as of v0.0.2 the archiving and unarchiving of zip files is suppprted. As of v0.0.5, the archiving and unarchiving of tar files is supported. As of v0.0.6, the archiving and unarchiving of gzip files is supported. See the usage below for more information. Run fecr -h for more info.

FerrumCrimper plans to support a wide range of file formats for both compression and extraction:

  • ZIP: Zip Archive and Unarchive Support:
    • Use --zip or -z to compress a directory.
    • Use --unzip or -uz to unextract a file.
    • Use --name or -n to specify the name of the output.
    • Use --output or -o to specify the output directory.
    • Use --level or -l to specify the compression level.
      • The following compression levels are supported:
        • Deflated levels range from 0 to 9. Default is 6.
        • Bzip2 levels range from 0 to 9. Default is 6.
        • Zstd levels range from -7 to 22, with zero being mapped to the level. Default is 3.
    • Use --compression or -c to specify the compression method.
      • The following compression methods are supported:
        • bzip2 (bzip)
        • deflate (default)
        • zstd (z)
  • TAR: Tar archive and unarchive support:
    • Use --tar or -t to compress a directory.
    • Use --untar or -ut to unextract a file.
    • Use --name or -n to specify the name of the output.
    • Use --output or -o to specify the output directory.
  • GZ: Gzip archive and unarchive support:
    • Use --gzip or -g to compress a directory.
    • Use --ungzip or -ug to unextract a file.
    • Use --name or -n to specify the name of the output.
    • Use --output or -o to specify the output directory.
    • Use --level or -l to specify the compression level.
      • The following compression levels are supported:
        • gzip compression levels range from 0 to 9. Default is 6.
  • 7Z: 7zip support coming soon!
  • BZIP2: BZip2 support coming soon!
  • XZ: Xz support comming soon!
  • Others: Additional formats will be supported in future updates.

License 👨‍⚖️

This project is licensed under the GNU GPLv2 License.

Contributing 🫶

We love and welcome contributions! To get started:

  1. Fork this repository.
  2. Create a new branch for your feature or bug fix.
  3. Make your changes, and test thoroughly.
  4. Submit a pull request with a description of your changes, and we'll take a look - thanks!

Please read our code of conduct before submitting a pull request.

Dependencies

~6–16MB
~208K SLoC