| Crates.io | rsdupes |
| lib.rs | rsdupes |
| version | 0.1.0 |
| created_at | 2025-09-26 21:56:29.025931+00 |
| updated_at | 2025-09-26 21:56:29.025931+00 |
| description | A file deduplication utility. |
| homepage | |
| repository | https://codeberg.org/epsilon-phase/rsdupes |
| max_upload_size | |
| id | 1856718 |
| size | 69,196 |
Fast duplicate detection and remediation
rsdupes -i <extension-to-include> -e <extension-to-exclude> -m <minimum-size> <Directory>
To write a listing of duplicates, this is useful for figuring out what might be duplicated without doing anything risky.
rsdupes -j duplicates.json ~
I have a lot of mods on some games, and did you know that some of them use duplicate assets? For example, for Rimworld, this should help slightly.
rsdupes -i jpg -i png -i xml -i dds -h ~/.local/share/Steam
For example, steam tends to install a lot of copies of mono for various games, this can consume several megabytes, and can be hard-linked for minor reduction of disk usage.
This may have deleterious effects should the game's copy of Unity move to a newer version. This will also deduplicate the various Visual C++ redistributables, which might be... less hazardous.
# Don't run this probably
rsdupes -i exe -i dll -i xml -h ~/.local/share/Steam
You may have a lot of media stored, I sure do. This might be helpful, and it should be safe.
rsdupes -i png -i jpg -i gif -i webp -i webm -i mp4 -i mkv -h <MEDIA-PATH>
Current functionality:
{
"<file_size>": {
"<HASH>": [
"PATH":[
"DUPLICATE",
"DUPLICATE2"
],...
],
...
}
}
┌────────────────────────────┐
│ Filesystem recursion actor │
└─────────────┬──────────────┘ ┌───────────────────┐
├───────────────────┤FileExtensionFilter│
│ (File Paths) └───────┬───────────┘
│ │
┌─────────┴────────┐ │
│Inode Deduplicator├──────────────────┘
└─────────┬────────┘
│ (File Paths)
┌─────────┴────────────┐
│ Size Duplicate buffer│
└─────────┬────────────┘
│ (File Paths)
┌────────┴───────┐
│ Partial hasher ├───────────────────────┐
└────────┬───────┘ │
│ ┌────────┴─────────┐
│ (Filesize, │StatusDisplayActor│
│ PartialHash, └┬──┬─┬─┬──────────┘
│ Path) ↑ ↑ │ │
┌─────────────┴───────────────┐ │ │ │ │
│Partial Hash duplicate buffer│ │ │ │ │
└─────────────┬───────────────┘ │ │ │ │
│ │ │ │ │
┌─────┴─────┐ │ │ │ │
│Full Hasher├─────────────────┘ │ │ │
└─────┬─────┘ │ │ │
│ (Size, Hash, Path) │ │ │
┌───────┴────────┐ │ │ │
│Full Hash Filter├─────────────────┘ │ │
└───────┬────────┘ │ │
│ (Size, Hash, Path) │ │
├ │ │
│ │ │
┌─────┴─────────────────┐ │ │
│Byte-by-byte comparison├──────────┘ │
└───┬───────────────────┘ │
│ │
├────────┐ │
│ │ │
┌─────┴────┐ │ │
│HardLinker├───│───────────────────────┘
└────┬─────┘ │
├─────────┘
┌────┴─────┐
│JsonDumper│
└──────────┘