Simple CLI tool to watch directories and move their files to a single dumping ground
Find a file
renovate[bot] 50cdfda073
Some checks are pending
Check Rust code / check (push) Waiting to run
chore(deps): lock file maintenance
2025-08-20 00:58:26 +00:00
.cargo feat(nix): refactor out common args 2023-03-11 00:52:21 +00:00
.github chore: refresh cargo-dist configuration 2024-12-23 16:16:01 +05:30
.vscode chore(vscode): configure nix-env 2023-02-03 16:04:22 +00:00
src fix(rust): upgrade to Rust 1.88.0 2025-06-27 13:07:52 +05:30
.git-blame-ignore-revs chore: add reformat to git-blame-ignore-revs 2024-12-16 18:34:04 +05:30
.gitignore feat(config): allow specifying a custom file filter 2023-08-14 18:56:31 +05:30
audit.toml chore: migrate to cargo-audit 2023-02-03 15:56:24 +00:00
bacon.toml chore: set up a config for bacon 2024-12-23 15:53:11 +05:30
Cargo.lock chore(deps): lock file maintenance 2025-08-20 00:58:26 +00:00
Cargo.toml fix(deps): update rust crate dirs to v6 2025-01-12 17:44:23 +00:00
default.nix chore: reformat all files with nixfmt-rfc-style 2024-12-16 18:33:34 +05:30
dist-workspace.toml fix(ci): try resolving Apple targets build failure 2024-12-23 16:24:43 +05:30
flake.lock flake.lock: Update 2025-08-17 00:48:20 +00:00
flake.nix fix(rust): upgrade to Rust 1.88.0 2025-06-27 13:07:52 +05:30
LICENSE-APACHE chore: add README and license files 2022-08-10 15:26:07 +05:30
LICENSE-MIT chore: add README and license files 2022-08-10 15:26:07 +05:30
README.md Revert "feat(ci): disable GHA workflow" 2024-09-12 10:20:54 +05:30
release.toml chore(release): update cargo-release config 2022-12-09 18:02:27 +00:00
rust-toolchain.toml fix(rust): upgrade to Rust 1.88.0 2025-06-27 13:07:52 +05:30
shell.nix chore: reformat all files with nixfmt-rfc-style 2024-12-16 18:33:34 +05:30

rucksack No Maintenance Intended

rucksack is a simple file moving service that was built to solve the use case of watching a collection of directories and collecting all there files into a single target directory.

The idea for this was born from the frustration of playing games and wanting to share screenshots from them with my friends. Every game likes to hide its screenshots in a specific obscure path which made it harder to find them when I needed to. With rucksack they can all neatly stay in a single folder making discoverability significantly easier.

Usage

Configuration

An example config file can look something like this:

# ~/.config/rucksack.toml
name = "Screenshots" # Optional
sources = [
  "/mnt/Games/Minecraft/screenshots",
  "/c/Users/Harsh Shandilya/Pictures/God Of War"
]
target = "/mnt/mediahell/screenshots"
file_filter = "*.png"

Running

Prebuilt binaries for macOS and Linux can be installed from here.

rucksack uses watchman to power its file-watching capabilities. You can find the steps to install it for your own platform here.

To build from source, clone this repository and run cargo run --release. You will require a Rust installation.

rucksack is only tested against the latest stable release of Rust but a few versions older should also be fine.

Licensing

Dual licensed under Apache 2.0 or MIT at your option.