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

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

Total release size: 197.0 MB

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

Download URL pyfstree-26.10.203-cp314-cp314-win_amd64.whl
Size 6.5 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
615de37ba1068e4ed168a3981ab782f40269cd187e8543c6246af97bf024ccff
BLAKE2b-256 checksum
How to use checksums
d7c3861433ca748d3b25aee94a8aa5dd7e974904e77f6d540eea12050ebb9abf
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.203-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.203-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
e66e69f41378b68816e786c93c12a6fa602796ee3b9570f6658a4990ed179955
BLAKE2b-256 checksum
How to use checksums
dc923c3a253f4a5ef28afcd57bdcfd2fa2e0f5922dfdf9cfa2511a9aba64aad7
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.203-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.203-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
9b47cb42b526c5390a56a29554c464351779040301b50496212cc61956bda865
BLAKE2b-256 checksum
How to use checksums
794c1dfef5400ae0203c4960d96e2e28100b4a751433188da9ea5a83a6597ebf
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.203-cp314-cp314-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.203-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
ddd48f1ee9bef1a8daab7ab0ecb2d33be7788aaaee3fcf3082619041df357081
BLAKE2b-256 checksum
How to use checksums
a4698bb9199f30093314802d946b591b17a0f6a53d8ca1f3639545463070bc91
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.203-cp313-cp313-win_amd64.whl

Download URL pyfstree-26.10.203-cp313-cp313-win_amd64.whl
Size 6.3 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
76a7156d7e3bfa31672c7e5470de502b0b6bac3f73195b531f3523c3074ffd3c
BLAKE2b-256 checksum
How to use checksums
3182dfe9e0963f0b80ddce2e2b049691295259889049cf427b3a597cea838a5e
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.203-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.203-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
87d91ed72b4a51b932dc29b5ad5ea3fbc87a35f6e2a14a1fe749ea40fdf07a94
BLAKE2b-256 checksum
How to use checksums
eeb888e34cbd0080a44486c08904a4aee8b105f742c16a923c716c7ebee5b9a4
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.203-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.203-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
ba4c94ecc28986b44df8d02876a646836e0c66ee7278c2c497ffefd134965242
BLAKE2b-256 checksum
How to use checksums
f1b9799fac543a59bb93f2000df887fd243ce8803926cda8397e55cb56fe85db
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.203-cp313-cp313-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.203-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
9f37ea917956a0aba84a283dc16b3d33d30b7d9348a4b21474769dd539f22064
BLAKE2b-256 checksum
How to use checksums
7b39a6b25dd83196c56522d97bc113081acb3a3bd6da7493bed5687f31ccf881
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.203-cp312-cp312-win_amd64.whl

Download URL pyfstree-26.10.203-cp312-cp312-win_amd64.whl
Size 6.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
c7f406b91952a896fdcd7452dec6e16afbb010a4eaff69191a2c67dc78e55360
BLAKE2b-256 checksum
How to use checksums
a928036a8bde9677409051556347cda5c3411791b3f2b601486902801de509f8
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.203-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.203-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
72afd8ee4c2ff20f3183584c0f443a1df0cdaf32a5f1a2a1ecda60159288e401
BLAKE2b-256 checksum
How to use checksums
6bb3a4d8f650a5a66f64c566e41a8449bf3d9d0cc7058f6b09f347245ca80606
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.203-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.203-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
68ccd5edbe4a95097355e93f573adafc6961ca45d78780ab710128334fab944b
BLAKE2b-256 checksum
How to use checksums
00f644e1f1bf78c2f69809af04eb60064d4e675658e367f23008fcc356bea622
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.203-cp312-cp312-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.203-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
e6eed89f2dafe155d32bd02616cb7b568c920972bd51f0ff153a8c94902de35e
BLAKE2b-256 checksum
How to use checksums
1c3103a98d41235b3390efc26f5923e46c8c5876d28f96651c0ff37f1dd235df
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.203-cp311-cp311-win_amd64.whl

Download URL pyfstree-26.10.203-cp311-cp311-win_amd64.whl
Size 6.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
1e62bec9934efc89b5a84db1914cd8660b7e7fa23da115ec277b8d60e5cff334
BLAKE2b-256 checksum
How to use checksums
18b414dfe4bd03bab4a60be73567aa25c0a196173d8ecd4b6efbe63ba47bffbc
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.203-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.203-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
a44df324a807317f665138df3e10fa56ed2b7768ce9909279b4fb0c278023c89
BLAKE2b-256 checksum
How to use checksums
2d3b0b23b4570bd135f8b8ed710699eb892aea565dac118bf24f2364a130afc1
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.203-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.203-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
b34aeb61fbfdd44dd00c990b210556d671c29113b9374a3c73114df1fc76fcef
BLAKE2b-256 checksum
How to use checksums
1e7a61c8869204fea15f438651f7ef29c19926510de58129b6c6b92d698f1e8c
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.203-cp311-cp311-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.203-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
81612a7789094ae7297717d1aca7a532d9c26997591b247c756f06d8180e71a5
BLAKE2b-256 checksum
How to use checksums
4f8c5712e78cdbcf7cc826842d167cf6145ccb375dd6e3407c46c9441427f743
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.203-cp310-cp310-win_amd64.whl

Download URL pyfstree-26.10.203-cp310-cp310-win_amd64.whl
Size 6.3 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
a943f44e525539d130b39dc938f1c74e5b685c2fbebc04240538172fa8b9c22d
BLAKE2b-256 checksum
How to use checksums
4bb9e9c8989c1c479858f0a457e808904fad160292795bacb41b1930c0f225b4
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.203-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.203-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
06f3c637f37a541bedd68d4730d81fb87257c658b2db663735eca2fd3c15ad16
BLAKE2b-256 checksum
How to use checksums
ee16f8070f272a9cbf48bdf1c0bfb5379fb80defb92bd826552ac8217714c90f
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.203-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.203-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
94077180b14a6ee1cd1808023b5620286f341976a3becdac3ed4934fefc9719b
BLAKE2b-256 checksum
How to use checksums
2ef90df42f8e5e2e669b473fbf604696195f0251b943240c738a8f5fd501cfff
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.203-cp310-cp310-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.203-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
3d98633368a3975a879e62c1713750a9d02c245c36577e630226c82c6b98c2ca
BLAKE2b-256 checksum
How to use checksums
f197d508177a82495e844a51b57c10d6f4edf5271f36ce4da7e90c2d3f43f7ee
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.203

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