Skip to content
/ rmx Public

Multiplatform port of GNU rm with extra features and improved performance

Notifications You must be signed in to change notification settings

demfabris/rmx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rmx

Crates.io Crates.io Crates.io

Multiplatform drop in replacement for GNU rm with extra features

About

This project is a close port of GNU rm. The idea is extending the functionality around rm API and bring some niceties with improved performance, specially for large files and deeply nested directories.

Features

  • 🐧 Original GNU rm api
  • 📎 System trash bin integration (-t)
  • ⚡ Blazingly fast
  • 💀 Unrecoverable removal (--shred)
  • 🔎 More filtering options

Benchmarks

Benches are defined here

Running

To profile how rmx performs on your system:

cargo bench

Comparison

remove rmx rm rmt rmd
files 4.9297ms 19.991ms 10.003ms 9.2056ms
recursively nested folders 4.9784ms 20.122ms 10.135ms 9.3328ms
multiple deeply nested folders 4.8809ms 19.504ms 10.308ms 9.2406ms
multiple deeply nested folders (rip mode) 4.2580ms - - -

numbers obtained on a Alienware M15 R6, at commit: 34e1e5a2

rmx consistently scores better performance while offering the same API as GNU rm

Examples

Deleting deeply nested directory (blazingly fast)

rmx --rip node_modules

Sending files to system trash bin

rmx file1 file2 -t

Follow symlinks (unix only)

rmx --follow-links link

Wipe a file and make it unrecoverable

rmx --shred file

Standard GNU rm usage

  • rmx --one-file-system -i *.txt handles more glob matching args, rm panics at ~10k+ matches`
  • rmx --preserve-root=/home --interactive=once /home/*/*
  • rmx --verbose -rf --no-preserve-root /

Installation

Source

From crates.io

cargo install rmx

Binaries

AUR: yay rmx-bin

Prebuilt binaries

Find all release targets here

Pro-tip:

Put in your favorite shell rc file: alias rm='rmx'

Disclaimer

  1. Do not trust this tool for automation/production usage, this is not a 1:1 port of GNU rm and the underlying system calls are not the same.
  2. You may experience different performance results, overall rmx improves the computation load. I/O might still be your biggest bottleneck.
  3. Making the contents of a file unrecoverable is not a fully trusted operation nowadays.

About

Multiplatform port of GNU rm with extra features and improved performance

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages