| Crates.io | rbackup |
| lib.rs | rbackup |
| version | 0.6.0 |
| created_at | 2025-10-06 06:47:22.341976+00 |
| updated_at | 2025-10-11 21:05:43.404151+00 |
| description | Incremental, cross-platform and multithreaded backup tool written in Rust |
| homepage | https://github.com/umpire274/rbackup |
| repository | https://github.com/umpire274/rbackup |
| max_upload_size | |
| id | 1869796 |
| size | 147,937 |
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)
yay -S rfortune
# or
paru -S rfortune
brew tap umpire274/rbackup
brew install rbackup
cargo install rbackup
rbackup <source> <destination> [OPTIONS]
Note: If
rbackupis executed without any subcommand or positional arguments, the program will print the full help message and exit successfully with status code 0. This behavior is intended so invoking the binary with no arguments acts as a safe help display rather than an error.
rbackup ~/Documents /mnt/backup_drive/Documents
Global options (applicable to all commands)
| 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 |
Below are the top-level commands with the most relevant options and quick usage notes for each. This layout is easier to scan than a dense table when commands have many options.
Description: Perform an incremental backup from a source directory to a destination directory. Only new or modified files are copied.
Usage:
rbackup copy <source> <destination> [OPTIONS]
Important options:
<source> <destination> โ required positional arguments-q, --quiet โ suppress console output-t, --timestamp โ prepend timestamps to messages--log <FILE> โ write output to a log file-x, --exclude <PATTERN> โ exclude files matching the given glob pattern (repeatable)--absolute-exclude โ match exclude patterns against absolute source paths--ignore-case โ perform case-insensitive matching for exclude patterns--dry-run โ perform a dry-run without copying filesExample:
rbackup copy C:\source\folder D:\backup\folder --exclude "*.tmp" --dry-run --log dryrun.log
Description: Manage the configuration file (view, initialize or edit).
Usage:
rbackup config [OPTIONS]
Important options:
--init โ initialize a default configuration file--print โ print the current configuration to stdout--edit โ open the configuration in the user's editor--editor <EDITOR> โ specify the editor to use (overrides $EDITOR/$VISUAL)Example:
rbackup config --init
Usage:
rbackup help [COMMAND]
Description: Print help for a specific command (e.g. rbackup help copy).
--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
/home/me/project, pattern build/** matches /home/me/project/build/foo.--absolute-exclude to match the pattern against the absolute path of the source file instead.$RECYCLE.BIN or
Thumbs.db will match files whose name equals that string anywhere in the source tree.Case sensitivity
--ignore-case to enable case-insensitive matching for exclude patterns.Examples
rbackup copy /source /dest --log backup.log --exclude '*.dmg' --exclude 'Thumbs.db' --ignore-case
rbackup copy /source /dest --exclude '$RECYCLE.BIN' --exclude '.*'
Tip: In
zsh/bashwrap patterns that contain$or other special characters in single quotes:'$RECYCLE.BIN'.
Absolute vs relative matching
--exclude 'temp/**' will skip anything under source/temp/.--absolute-exclude with --exclude '/home/me/project/temp/**' will match only that absolute path.Dry-run and logging
--dry-run with --log to generate a report of what would be copied or skipped โ but without changing the
destination:rbackup copy /source /dest --exclude '*.tmp' --dry-run --log dryrun.log
Copied and Skipped entries. Skipped entries include the exclude pattern that caused the
skip when applicable, which helps debugging complex exclude sets. Skipped files are also printed to the console unless
the --quiet option is used.Use-cases
rbackup copy /home/dev/project /backup/project --exclude 'target/**' --exclude '*.o' --exclude '*.class'
rbackup copy ~/Documents /mnt/backup/Documents --exclude '*.mp4' --exclude '$RECYCLE.BIN' --exclude 'Thumbs.db' --ignore-case
This section provides concise, copy-pastable examples for common CLI workflows and for managing translations during development.
rbackup C:\Users\alice\Documents D:\Backups\alice\Documents
rbackup C:\source\folder D:\backup\folder --log backup.log --timestamp
cmd.exe):rbackup C:\source D:\dest --exclude "*.tmp" --dry-run --log dryrun.log
rbackup config --init
rbackup config --edit
A small helper script is provided at scripts/translations_tool to validate translations and to generate/apply language
templates.
cd scripts\translations_tool
cargo run -- validate
es and print it (prefill with English values):cd scripts\translations_tool
cargo run -- template es --fill-en
es into assets/translations.json, creating a timestamped backup, and do not
overwrite if es already exists:cd scripts\translations_tool
cargo run -- apply es --fill-en
cd scripts\translations_tool
cargo run -- apply es --fill-en --force
Notes:
apply command creates a backup file under assets/ named like translations.json.YYYYMMDD_HHMMSS.bak before
modifying assets/translations.json.cargo run -- validate to ensure
key consistency.rbackup /home/alex/Projects /mnt/usb-backup --log backup.log --timestamp
To compile rbackup yourself:
git clone https://github.com/your-username/rbackup.git
cd rbackup
cargo build --release
For Windows, rbackup.rc will be embedded automatically in the executable.
This project is licensed under the MIT License.
ยฉ 2025 Alessandro Maestri
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.