Skip to main content

File System Snapper

fs-snapper consists of two tools. The first is a Rust-written CLI tool that enables one to create databases with filesystem path trees and their accompanying UNIX permission related information. This allows one to diff the databases to easily identify changes over time for systems. The second tool is a Python GUI (Qt/PySide6) tool which allows one for easier navigation of filesystem trees and examining UNIX permissions.

Installation

This assumes you have Python as well as a Rust toolchain installed. The easiest is to build within a python virtual environment as follows:

$ python3 -m venv env
$ source env/bin/activate
(env) $ python3 -m pip install .
Processing /home/gvb/fs-snapper
  Installing build dependencies ... \
...
Successfully installed fssnap-0.1.0

You can then run both tools by executing fssnap-cli and fssnap-gui respectively:

(env) $ fssnap-cli
Usage: fssnap-cli [OPTIONS] <COMMAND>
....
(env) $ fssnap-gui
...

Usage

$ fssnap-cli index --db test.db --paths /etc
$ fssnap-cli calc-perms --db test.db --user gvb --output test_gvb.db
$ fssnap-gui test_gvb.db

Building portable cli

The project is structured as a backend library that is used as a Python extension for the GUI using PyO3. This means that if you want a portable build to dump the binary on a target Linux machine without having to deal with potential GLIBC versioning errors you should build against musl libc. Just blindly running cargo build then will fail as musl does not support dynamically linked libraries so the Python extension module cannot be built then. To just build the cli for the musl target use the following:

cargo build --release --target x86_64-unknown-linux-musl --bin fssnap-cli

The resulting static binary will be found at ./target/x86_64-unknown-linux-musl/release/fssnap-cli.

Metadata

Release files for fssnap 0.8.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fssnap 0.8.2
File Size Uploaded
fssnap-0.8.2.tar.gz 1.9 MB Details

Release files / fssnap-0.8.2.tar.gz

Download URL fssnap-0.8.2.tar.gz
Size 1.9 MB
Tags Source
SHA-256 checksum
How to use checksums
9a645498fc66a9130d8a63699dea7f81880d5d80be371cea7d4bfaf006dc390a
BLAKE2b-256 checksum
How to use checksums
52ea3682e8fd024e50000fc09f7eb0fc1b78a17119c17213cb1ccc6b479a59e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

0.8.2 This release

1 release file

0.8.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page