Skip to main content
Build status

fstree - filesystem tree sharing and sync

Fstree a tool to share a filesystem tree over the network and keep it in sync.

It is similar to rsync, but it is designed to be used in a client-server model, where trees are pushed and pulled between the server and the clients. Merkle trees are used to efficiently determine what parts of the tree need to be downloaded or uploaded.

Files and directories can be ignored using a .fstreeignore file in the root of the tree. It uses the same syntax as .gitignore files, including negated patterns: a pattern prefixed with ! re-includes paths that an earlier pattern ignored, and the last pattern matching a path decides whether it is ignored. To match a literal leading !, escape it as \!.

As in git, a file below an ignored directory cannot be re-included by a negated pattern. Ignored directories are pruned while the tree is scanned, so their contents are never visited.

A simple gRPC protocol is used to communicate between the client and the server. A reference server implementation is available as the robrt/jolt-cache Docker image on Docker Hub.

HTTP remotes are also supported for basic upload and download of objects. This allows integration with existing HTTP file servers or CDNs. Note that HTTP remotes are significantly less efficient than the gRPC server, as they do not support querying for the presence of multiple objects and trees at once.

Usage

To start the server, run:

docker run -v /path/to/data:/data -p 9090:9090 robrt/jolt-cache -i

To push a tree to the server, run:

fstree write-tree-push --remote jolt://localhost:9090 /path/to/data

The steps above can be split into two separate commands:

fstree write-tree /path/to/data
fstree push --remote jolt://localhost:9090 <digest>

To push a tree to a standard HTTP server, run:

fstree write-tree-push --remote http://localhost:8080 /path/to/data'

To pull a tree from the server, run:

fstree pull-checkout --remote jolt://localhost:9090 <digest> /path/to/data

The steps above can be split into two separate commands:

fstree pull --remote jolt://localhost:9090 <digest>
fstree checkout <digest> /path/to/data

To pull a tree from a standard HTTP server, run:

fstree pull-checkout --remote http://localhost:8080 <digest> /path/to/data

To list the contents of a tree, run:

fstree ls-tree <digest>

Configuration

Configuration can be passed as command line arguments or environment variables.

The following environment variables are supported:

  • FSTREE_CACHE: The directory where the local object cache is stored. Defaults to ~/.cache/fstree on Linux and macOS and ~/AppData/Local/fstree on Windows.

  • FSTREE_IGNORE: The relative path to the ignore file. Defaults to .fstreeignore in the root of the tree.

  • FSTREE_REMOTE: The remote address of the server to connect to. Defaults to jolt://localhost:9090.

  • FSTREE_THREADS: The number of threads to use for parallel operations. Defaults to the number of CPU cores.

The following command line arguments are supported:

  • --cache: See FSTREE_CACHE.

  • --ignore: See FSTREE_IGNORE.

  • --remote: See FSTREE_REMOTE.

  • --threads: See FSTREE_THREADS.

Building

The project can be built using CMake, but developers typically use Jolt as a higher level orchestrator. To build the project using Jolt, run:

pip install jolt
jolt build fstree

Metadata

Release files for pyfstree 26.10.199

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

Built distributions (wheels)

Table of built distributions (wheels) for pyfstree 26.10.199
File
pyfstree-26.10.199-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
pyfstree-26.10.199-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
pyfstree-26.10.199-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
pyfstree-26.10.199-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
pyfstree-26.10.199-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pyfstree-26.10.199-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
pyfstree-26.10.199-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
pyfstree-26.10.199-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
pyfstree-26.10.199-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pyfstree-26.10.199-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
pyfstree-26.10.199-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
pyfstree-26.10.199-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
pyfstree-26.10.199-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pyfstree-26.10.199-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
pyfstree-26.10.199-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
pyfstree-26.10.199-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
pyfstree-26.10.199-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pyfstree-26.10.199-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
pyfstree-26.10.199-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
pyfstree-26.10.199-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 196.8 MB

Release files / pyfstree-26.10.199-cp314-cp314-win_amd64.whl

Download URL pyfstree-26.10.199-cp314-cp314-win_amd64.whl
Size 6.5 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
917decea1ee7743eac80dc505daad491adfd8674b642759c6e9feb829a4d858c
BLAKE2b-256 checksum
How to use checksums
2bef8d67a238fcecbdc7c0dd51c560dcf330bcd13e17d26f07c39093a014ccea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.199-cp314-cp314-musllinux_1_2_x86_64.whl
Size 12.9 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
5ac6fbe51f6a28b4a0a8e26b66c5d05772f6acfc52f353a8513f93cec549a65a
BLAKE2b-256 checksum
How to use checksums
1b18066241b3049db6b2af46f5fa215b1412af60d21d55ded4c33922a16755ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.199-cp314-cp314-manylinux_2_28_x86_64.whl
Size 11.7 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
8e8a44ca525b00d0e45673ad36fa54557d56ad547ca36ffec32cf03514383fdc
BLAKE2b-256 checksum
How to use checksums
108f06e2c7c89bfd04b3a369b384f9c2b90248f3697b96b98f0e9b9383435e78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp314-cp314-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.199-cp314-cp314-macosx_11_0_arm64.whl
Size 8.4 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
17b6b58b78830ef075e18f481585f7dd903b3d753463012ed23dee048ef05013
BLAKE2b-256 checksum
How to use checksums
0aaff9300c893d16bd75dbba7375650b43464c1c8c2e3afa7b63d42818408e05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp313-cp313-win_amd64.whl

Download URL pyfstree-26.10.199-cp313-cp313-win_amd64.whl
Size 6.3 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
ce7f2d063f73feb8ed5fd636218610c7e3daef4a537371e7536c3b016b281edf
BLAKE2b-256 checksum
How to use checksums
d1e38208e7510dccd6df61e4da3ba5554692d583f040ec8ae7f1a320781d292b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.199-cp313-cp313-musllinux_1_2_x86_64.whl
Size 12.9 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
a2ba158b537ab7302997dc24f622ea65de4f2997fa3fc322c97723434d679784
BLAKE2b-256 checksum
How to use checksums
9200cb3f3a938e058f37acdd452ebb3134cdfc3a27a3b48f05e51f7f75fe7a3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.199-cp313-cp313-manylinux_2_28_x86_64.whl
Size 11.7 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1363b41467d7907ea6d3c2947fd34f06fd3075fc8af22e860eadd2f4ab23c9bc
BLAKE2b-256 checksum
How to use checksums
d783a5d1544680ba1558ad9b7e1bb0ff8c20562d93734aa18efbbe05e128f84a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp313-cp313-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.199-cp313-cp313-macosx_11_0_arm64.whl
Size 8.4 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2b838e2ee6ac1e4b1105cfcc1f1c3732aa7511099adaeb4af300e6c25854063b
BLAKE2b-256 checksum
How to use checksums
57e95fef333b06651ffc11c37ef5840c7414a15e1ab3df0bfc53e561d92aa740
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp312-cp312-win_amd64.whl

Download URL pyfstree-26.10.199-cp312-cp312-win_amd64.whl
Size 6.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
3b58cc983e8d00fb94476ff489569fdbbfec23338c436ea7ecdb8101e3f27b8b
BLAKE2b-256 checksum
How to use checksums
e83f09f1426d76e86ce045e01405f7f47f5db11986e31246050a761e8bcc7ae5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.199-cp312-cp312-musllinux_1_2_x86_64.whl
Size 12.9 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
f593b28f88ceb413baf03e1833442215efb8f5efeb21780f81dc8fc498c02a36
BLAKE2b-256 checksum
How to use checksums
2de2fc26ca30ecc0a40cb625e77ad26be4f4b49e8f21d7c2690bf7ed64f3cc48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.199-cp312-cp312-manylinux_2_28_x86_64.whl
Size 11.7 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
22e2c2fcb314ca3c8e681eda3fad2fb4a33dd67a94f50006ab3065d44cd35ea7
BLAKE2b-256 checksum
How to use checksums
323519d1f67c59b6487a7cf91aaafb5dd4260b4cb40a11dd80b3f030f71b0ab8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp312-cp312-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.199-cp312-cp312-macosx_11_0_arm64.whl
Size 8.4 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
eebc7ccb1c32b035aecb076d1bd2c7e2f5464ace681bc30ff97e11525e22030c
BLAKE2b-256 checksum
How to use checksums
e5bb87c486a509ffc9c2e2d7c5ce3f6090e1c1fcb637bfd98075202359039193
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp311-cp311-win_amd64.whl

Download URL pyfstree-26.10.199-cp311-cp311-win_amd64.whl
Size 6.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
4f0ec285780c3274f5856430c25582c064ae7172f2bce65eba448bab753f164d
BLAKE2b-256 checksum
How to use checksums
c922e5d8612c2f92b8b82d67dd0875418fc18a90a14aa856895f32d2b7e287a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.199-cp311-cp311-musllinux_1_2_x86_64.whl
Size 12.9 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
7584b1e9199c5b958e51f4db01cf9233ce628c37e306501984e73afb64c63d85
BLAKE2b-256 checksum
How to use checksums
abba87720e9ce64f8c9470f0eeff41fed1ddb8a0094ca86cd5997c0e43ea85b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.199-cp311-cp311-manylinux_2_28_x86_64.whl
Size 11.7 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5c61f94cdb4ae79110e31c5b2a329dacc16c5405843a2c6e5081043ee98960ea
BLAKE2b-256 checksum
How to use checksums
88c301eac9d34f1114c1f1dc9ad45450b5b6b00a4402d0b9137d5eefc3e61241
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp311-cp311-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.199-cp311-cp311-macosx_11_0_arm64.whl
Size 8.4 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b9f936875df61fa1cbe75bf7272f7c23432d16ee84912efb022b4d6f9ad461c8
BLAKE2b-256 checksum
How to use checksums
29a1c8b82d76c4177477677a3e9f140346a36f9605dafd9e19bf4fb8b0d39635
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp310-cp310-win_amd64.whl

Download URL pyfstree-26.10.199-cp310-cp310-win_amd64.whl
Size 6.3 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
bc445a871c185b9e49a7398f51e1bb39d08f21c15d14e6538660a8a3ba74463c
BLAKE2b-256 checksum
How to use checksums
f2452d13d951b08c1e6ba8d8231b00c78a900b605346c6ae0e0cb4b56ad73484
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.199-cp310-cp310-musllinux_1_2_x86_64.whl
Size 12.9 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
2857deab363be66b0f88909cc5e8d32b272c00be6e8b0a05f0e54107b085f767
BLAKE2b-256 checksum
How to use checksums
04f16144a5aca79553c8b81d3102f7788609c042aa632861a7a075c03fd9defa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.199-cp310-cp310-manylinux_2_28_x86_64.whl
Size 11.7 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
99042d8881926ff7940ba0cc6448a899a7aca348a7535bf8502756fa053edbf1
BLAKE2b-256 checksum
How to use checksums
d18bf5c22d63f0ad49763e302c9680f5072c3de77fbbdb1613f43a1e0ba0effd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / pyfstree-26.10.199-cp310-cp310-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.199-cp310-cp310-macosx_11_0_arm64.whl
Size 8.4 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
047b6c480d143a565211873983fb130581346bbdb7aa71d4ef215c9831f14b2e
BLAKE2b-256 checksum
How to use checksums
cc2a5ab889e78098379cd42d9a017a3f85881e2506a4458d16ecf34cd0f517f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Security for pyfstree 26.10.199

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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