rbackup
rbackup is a fast, cross-platform, and multithreaded command-line utility written in Rust for performing incremental backups of directories. It is inspired by tools like rsync and robocopy, but designed with simplicity, portability, and localization in mind.
๐ View recent changes (Changelog)
โจ Features
- ๐ Incremental backup โ copies only new or modified files
- โก Multithreaded โ uses all CPU cores to speed up large backups
- ๐ Multilingual support โ English and Italian (with auto-detection)
- ๐ฆ Portable โ no installation required, single binary
- ๐งพ Optional logging โ write backup reports to a file
- ๐ Progress bar โ display graphical progress bar during copy process
- ๐คซ Quiet mode โ suppress all output for silent operation
๐ฆ Installation
๐ง AUR (Arch Linux)
# or
๐บ Homebrew (macOS/Linux)
๐ฆ Crates.io (Rust)
๐ฅ Download
Precompiled binaries are available in the Releases section.
| Platform | Architecture | File |
|---|---|---|
| Windows | x86_64 | rbackup-<version>-x86_64-pc-windows-msvc.zip |
| Linux | x86_64 | rbackup-<version>-unknown-linux-gnu.tar.gz |
| macOS | x86_64 | rbackup-<version>-x86_64-apple-darwin.tar.gz |
| macOS | aarch64 | rbackup-<version>-aarch64-apple-darwin.tar.gz |
๐ GPG Signature
All release archives are cryptographically signed with GPG.
.sigfiles contain the ASCII-armored detached signature for the corresponding archive.- You can verify the archive with:
๐ Public Key
The releases are signed with the following GPG key:
- Key ID: 423FABCE0A1921FB
- Fingerprint: 8118 9716 9512 2A32 1F3D C04C 423F ABCE 0A19 21FB
- Download: https://github.com/umpire274.gpg
To import the key from a keyserver:
Or from OpenPGP server:
Then verify the fingerprint:
๐ Usage
โ Basic example
๐งฉ Options
| Option | Description |
|---|---|
-q, --quiet |
Suppress console output |
-t, --timestamp |
Prepend timestamp to messages |
--log <FILE> |
Write output to a log file |
-l, --lang <code> |
Force language (e.g. en, it) |
-V, --version |
Show version |
-h, --help |
Show help message |
๐ Exclude patterns (--exclude)
rbackup copy supports flexible exclude patterns to skip files and directories during a backup. The --exclude <PATTERN> option can be used multiple times to provide multiple glob patterns.
Where patterns are matched
- By default patterns are matched against the path relative to the source directory. Example: with source
/home/me/project, patternbuild/**matches/home/me/project/build/foo. - Use
--absolute-excludeto match the pattern against the absolute path of the source file instead. - The matcher also tests the file basename (the filename only). This means a simple pattern like
$RECYCLE.BINorThumbs.dbwill match files whose name equals that string anywhere in the source tree.
Case sensitivity
- By default matching is case-sensitive.
- Use
--ignore-caseto enable case-insensitive matching for exclude patterns.
Examples
- Exclude macOS DMG files and Thumbs.db files (case-insensitive):
- Exclude the Windows Recycle Bin directory by basename and hidden files starting with a dot:
Tip: In
zsh/bashwrap patterns that contain$or other special characters in single quotes:'\$RECYCLE.BIN'or better'$RECYCLE.BIN'.
Absolute vs relative matching
- Relative match (default):
--exclude 'temp/**'will skip anything undersource/temp/. - Absolute match:
--absolute-excludewith--exclude '/home/me/project/temp/**'will match only that absolute path.
Dry-run and logging
- Combine
--dry-runwith--logto generate a report of what would be copied or skipped โ but without changing the destination:
- The log file contains both
CopiedandSkippedentries. Skipped entries include the exclude pattern that caused the skip when applicable, which helps debugging complex exclude sets.
Use-cases
- Backup only source code files, ignoring build artifacts:
- Mirror a user's Documents folder but exclude large media files and the Recycle Bin:
- Debug why a file is skipped: run a dry-run with logging and inspect the log โ each skipped line shows the pattern that caused the skip.
๐ Example
๐งช Build from source
To compile rbackup yourself:
For Windows, rbackup.rc will be embedded automatically in the executable.
๐ License
This project is licensed under the MIT License.
ยฉ 2025 Alessandro Maestri
๐ก Contributing
Pull requests are welcome! If youโd like to add support for more languages, improve performance, or fix bugs, feel free to fork the repo and contribute.