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>

To print the content of a file in the cache, or the entries of a tree, run:

fstree cat-file <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. Use tls:// for a gRPC server with TLS, and https:// for an HTTP server with TLS.

  • FSTREE_CONNECT_TIMEOUT: Seconds to wait for the connection to a gRPC server before giving up. Defaults to 60.

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

Servers that require authentication are configured with the same variables as Jolt:

  • JOLT_CACHE_TOKEN: Token that authenticates the client with the server. It is only sent over TLS, to tls:// and https:// remotes.

  • JOLT_CA_CERT: PEM file with the certificates of the authorities that the certificate of the server is verified with, such as a private authority.

  • JOLT_ALLOW_INSECURE_TOKEN: Set to true to send the token without TLS.

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.11.204

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.11.204
File Actions
pyfstree-26.11.204-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for pyfstree-26.11.204-cp314-cp314-win_amd64.whl
pyfstree-26.11.204-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details for pyfstree-26.11.204-cp314-cp314-musllinux_1_2_x86_64.whl
pyfstree-26.11.204-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details for pyfstree-26.11.204-cp314-cp314-manylinux_2_28_x86_64.whl
pyfstree-26.11.204-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for pyfstree-26.11.204-cp314-cp314-macosx_11_0_arm64.whl
pyfstree-26.11.204-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for pyfstree-26.11.204-cp313-cp313-win_amd64.whl
pyfstree-26.11.204-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details for pyfstree-26.11.204-cp313-cp313-musllinux_1_2_x86_64.whl
pyfstree-26.11.204-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details for pyfstree-26.11.204-cp313-cp313-manylinux_2_28_x86_64.whl
pyfstree-26.11.204-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for pyfstree-26.11.204-cp313-cp313-macosx_11_0_arm64.whl
pyfstree-26.11.204-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for pyfstree-26.11.204-cp312-cp312-win_amd64.whl
pyfstree-26.11.204-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details for pyfstree-26.11.204-cp312-cp312-musllinux_1_2_x86_64.whl
pyfstree-26.11.204-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details for pyfstree-26.11.204-cp312-cp312-manylinux_2_28_x86_64.whl
pyfstree-26.11.204-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for pyfstree-26.11.204-cp312-cp312-macosx_11_0_arm64.whl
pyfstree-26.11.204-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for pyfstree-26.11.204-cp311-cp311-win_amd64.whl
pyfstree-26.11.204-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details for pyfstree-26.11.204-cp311-cp311-musllinux_1_2_x86_64.whl
pyfstree-26.11.204-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details for pyfstree-26.11.204-cp311-cp311-manylinux_2_28_x86_64.whl
pyfstree-26.11.204-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for pyfstree-26.11.204-cp311-cp311-macosx_11_0_arm64.whl
pyfstree-26.11.204-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for pyfstree-26.11.204-cp310-cp310-win_amd64.whl
pyfstree-26.11.204-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details for pyfstree-26.11.204-cp310-cp310-musllinux_1_2_x86_64.whl
pyfstree-26.11.204-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details for pyfstree-26.11.204-cp310-cp310-manylinux_2_28_x86_64.whl
pyfstree-26.11.204-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for pyfstree-26.11.204-cp310-cp310-macosx_11_0_arm64.whl

Total release size: 197.0 MB

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

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

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

Download URL pyfstree-26.11.204-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
7ba458184ca38f0f4cc60f05d553a27fb3472377a70c3d86035fd0d8f9c3da14
BLAKE2b-256 checksum
How to use checksums
0f694892f77b424295cf9fd27df1c2951c5cbab946d3ff50596c67d947236805
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

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

Download URL pyfstree-26.11.204-cp314-cp314-manylinux_2_28_x86_64.whl
Size 11.8 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
77844401fa38f18fd440a090ae5d27ff8568754de1e979e64480ebd447d9bb14
BLAKE2b-256 checksum
How to use checksums
46fa50ce2f0aecd081188f341c42664313a048098e07e676f2af990d1d749e60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

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

Download URL pyfstree-26.11.204-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
0a2c7936d5f5d3aebc6845f3c42d778a48a3d5eec22dcfbb65c064715cb25632
BLAKE2b-256 checksum
How to use checksums
c7be7ff981515423c78f06abb6e09c07a81e7d7efebb01e33baf0cddf84d5ea2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

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

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

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

Download URL pyfstree-26.11.204-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
23af541d5470e16bce864645a0ba3628b4f52b423f87295d61e2c09613b7c05c
BLAKE2b-256 checksum
How to use checksums
0de5e7e318e61d8452cb2b5bd5cc61ad89159bc33e60252612baf147eeb02755
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

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

Download URL pyfstree-26.11.204-cp313-cp313-manylinux_2_28_x86_64.whl
Size 11.8 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
60179212d64ca8ecf18f364d0affbe4de9d6cbb1da56e1b59330214aaa05c6ed
BLAKE2b-256 checksum
How to use checksums
47edc72d46c0c76e309d9777df8405c951b28ff6987b37d757a4c4428137e97f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

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

Download URL pyfstree-26.11.204-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
1d84515056a349f7e8cabc20a8909d0aa9d77c92b764d7915fa9be121aa47e84
BLAKE2b-256 checksum
How to use checksums
bfdd9523b95920267492ef5ea7363af6799937e187eeb9dfb708afe962f37fd0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

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

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

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

Download URL pyfstree-26.11.204-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
0e483f6418551abb04be965185ef3cfa3d43121ecd2a7dab97a16da002f70065
BLAKE2b-256 checksum
How to use checksums
75de24a2da1a4ff99608ea7dfb76761320e744b1d1c8c0fafffdf13bbdf6e22f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

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

Download URL pyfstree-26.11.204-cp312-cp312-manylinux_2_28_x86_64.whl
Size 11.8 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
fc3096e2ec12cd60ff07bb6f3666bc698510a3661d343b30fa276d70e24fe3f1
BLAKE2b-256 checksum
How to use checksums
e1bbdf26a701df6519214e2f0cef8564deea35d3a857788e38f9a897cc17a9f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

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

Download URL pyfstree-26.11.204-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
9d2d4e7d33bdf74fa575edb0132e35c199cb40fe3b4b1b59df5c8820a81c2d6b
BLAKE2b-256 checksum
How to use checksums
14c16b22023f1168b63382f88b1b502cc8cc3919b58131b88784fe52c8dd2d1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

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

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

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

Download URL pyfstree-26.11.204-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
702b3472403bec00b9e4952e160a4848ee7bc2506650ecaba7ec31eee8367077
BLAKE2b-256 checksum
How to use checksums
fff8a27a590fa9495409873cf3f1ad6a209644c6b30309dfedbecc2bdda23aa7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

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

Download URL pyfstree-26.11.204-cp311-cp311-manylinux_2_28_x86_64.whl
Size 11.8 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
127b39c4cf7831c8bb0b51856c11a295a95e736a1f0db042fd97c60cad9b3f84
BLAKE2b-256 checksum
How to use checksums
431819d8f3d533a481761a5d9b76595c1362cebe8ba4b9169d56a576adc714bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

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

Download URL pyfstree-26.11.204-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
f3ad150fe50a77d7ab6ae627a98b03422e627e8b832cbebc5a826f310f331583
BLAKE2b-256 checksum
How to use checksums
cbb08593a91b5bf78fdcfd7f2bd6948a69bdfaafed86c3b40ae6e2d041a9c674
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

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

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

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

Download URL pyfstree-26.11.204-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
f98b0ddf65b34fb2983a3dc2f3533e04ae0e4b1683b2cec173a092044b4243a1
BLAKE2b-256 checksum
How to use checksums
526ccf445a70a1f50af25ae0d6cc70728c5510f1dd150157aae41181c844408d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

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

Download URL pyfstree-26.11.204-cp310-cp310-manylinux_2_28_x86_64.whl
Size 11.8 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6ea7eadf7ffc826622ec07d45360fa82eb4399daf23c075567786d377a61ab38
BLAKE2b-256 checksum
How to use checksums
10bb416c0c26740d7a3a5380dcc6dc26411bcfde60ff189c48a59bf4ec5be3c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

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

Download URL pyfstree-26.11.204-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
1420d2e376574df6180752aa0b6f40cd7f0fc58b37235945fbf67b082b15ebd0
BLAKE2b-256 checksum
How to use checksums
c16d590f3a61fe8397d8fc6ca7771e4ef7e735d4506425fa6cab4c19b3e858b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.16

Security for pyfstree 26.11.204

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