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

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

Total release size: 196.1 MB

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

Download URL pyfstree-26.10.201-cp314-cp314-win_amd64.whl
Size 6.5 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
2c8c3096e0e5fbdd211acdad9654848b1274ef7bf0a0c3a79f660c534622181d
BLAKE2b-256 checksum
How to use checksums
856fd9d0f54daad073180d5ecc82d60c7b62fac44b9fa1703df513ae5ec0fe36
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.201-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.201-cp314-cp314-musllinux_1_2_x86_64.whl
Size 12.8 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
66f858c50d8dac3b3912ef679b04016e423fce6c2755df8d741ce9ba4a0a697f
BLAKE2b-256 checksum
How to use checksums
4010361692d96b1241cc835f42ecac852129dd3da12081de371c69d055a6bb69
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.201-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.201-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
97164b745aaf5a671d6b2bc2cfde0cf445e488644cfc14545d4c6ef69fe2555f
BLAKE2b-256 checksum
How to use checksums
b7c3985be52672aa401028c4c1888bc0965e679f0ebf57259650684414698d3a
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.201-cp314-cp314-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.201-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
4731e89efd00cad027cff3b2e122460973fc102490263b74d7f1e420aff88bf6
BLAKE2b-256 checksum
How to use checksums
cdd455466145574fede1c820f05fd4462a69582e39644f752875a45de0cfb979
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.201-cp313-cp313-win_amd64.whl

Download URL pyfstree-26.10.201-cp313-cp313-win_amd64.whl
Size 6.3 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
8952c7e51cb7b96bf1c221ee224a664c0d8428d07f1857a320a757e4db2243a3
BLAKE2b-256 checksum
How to use checksums
fbf04d25b7ea3c7d47df3f27b2cd3ce72bc178ce6ae35093f3dc1b622b70b541
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.201-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.201-cp313-cp313-musllinux_1_2_x86_64.whl
Size 12.8 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
f51d72ea9e5adadad3f722074dd3ac18f3780438540291290c083e4168eb7022
BLAKE2b-256 checksum
How to use checksums
d922ff9592ef9b19d5d9d5d00fc4b9a567119445d0013b9c5a62a93e9e65a3c0
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.201-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.201-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
fbd0b3e07155107b8fcfd5729902c5dafe6d0cc348175c253e4565cce4a0e458
BLAKE2b-256 checksum
How to use checksums
8467206276a56d4d57cb355115c2b366141229625a1b3e83fe4314f02a03c5a4
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.201-cp313-cp313-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.201-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
59b756a67d0bc271868843312ac9f6f33537faf353cd038519009e454bdc14e2
BLAKE2b-256 checksum
How to use checksums
b37aa80fafa1d23c7caa5871fa18b6b9e68a0954dcec32cd2d60b5c4ea4a9257
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.201-cp312-cp312-win_amd64.whl

Download URL pyfstree-26.10.201-cp312-cp312-win_amd64.whl
Size 6.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
c75ff096dba69e015fbc5f6e66ada2218bd974fe0d01cf280c749862987bc6d1
BLAKE2b-256 checksum
How to use checksums
3aababaa183cce39b32caeb6ebeac2185af83eb537d6f48412832e9705a440b0
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.201-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.201-cp312-cp312-musllinux_1_2_x86_64.whl
Size 12.8 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
c3086f0bfff6be9c5475c956f4c49723a0bf9332132d9b627850568d426352d3
BLAKE2b-256 checksum
How to use checksums
606275201c135ac9ac9617cf444ee12a99bc6140a16cbb4492c7030284c0d4a3
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.201-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.201-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
3c45f726e4120e0f2ac3403f11fd49cb439417a8d177547894e258442f5e1c4f
BLAKE2b-256 checksum
How to use checksums
193f51074fc0349b241cd85177aca5924282fda98a933c417c5ef3c5e50b388f
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.201-cp312-cp312-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.201-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
a8d1fa485e4e9d2ab4739f85afeb05ac14bb7f106d3deff9080950d1684ad250
BLAKE2b-256 checksum
How to use checksums
350e92019d44d24c3ab69771ef4734749b23aee413f2ff37a2829eb6e126ee09
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.201-cp311-cp311-win_amd64.whl

Download URL pyfstree-26.10.201-cp311-cp311-win_amd64.whl
Size 6.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
e11dfc1c842d026241132ed829e1fd54e0fd7bbdb6fc55fa2d841b005011f11a
BLAKE2b-256 checksum
How to use checksums
f8ae6929d003dfef5a3b9f97ecae5c6e0ef5b0b462a08088820b410b51f17b25
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.201-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.201-cp311-cp311-musllinux_1_2_x86_64.whl
Size 12.8 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
1f0970b23d2f2bbaa2f61eae9a623eba5621ee8a19ac8b3c3cfdd9261dc77368
BLAKE2b-256 checksum
How to use checksums
9ebd7fbb847d954405e7c3c746abdd33e4f66cc74c3394f8659f65aea270be62
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.201-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.201-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
3541356d828f5a02bc10d6007c16d892ae7b534540fbef7cbe5ba66c12d0e8cb
BLAKE2b-256 checksum
How to use checksums
0fe29f2122b30e04baad7919b50dd4e3bfc62d119cc8a7a903deb83bda22ad63
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.201-cp311-cp311-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.201-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
ea916b5e7551c5f455ebee67cd839b6aa962da2fc6ed8b4b854917cd4defd6d5
BLAKE2b-256 checksum
How to use checksums
274f7dc476f3d173bd20d404629bb4613f219fd20260e21e8a960b750b91b816
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.201-cp310-cp310-win_amd64.whl

Download URL pyfstree-26.10.201-cp310-cp310-win_amd64.whl
Size 6.3 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
19cf8b2351d54ab33c3b5e5f1ce882df3a80e3ba56e2f1ae20251f0336a4ef43
BLAKE2b-256 checksum
How to use checksums
57efef143ed3e7431e25e8c3b8084af5e00fe68813c7ce6005dc4764b40e292a
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.201-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.10.201-cp310-cp310-musllinux_1_2_x86_64.whl
Size 12.8 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
08802f08e4ce245eceead91f546c4769dce5bdc4c6c98d6748cd4431990b3f1c
BLAKE2b-256 checksum
How to use checksums
8cc595f29203e33fd47c52fe021c8c6d527235a760461db02d473080958fe743
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.201-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.10.201-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
0448f97087bb0ba4c223d81c242cc153ff1da661147a6351e6b63cd910716fbd
BLAKE2b-256 checksum
How to use checksums
2ae2b5fd59481e03c43747eacd3cb9d02b167546db0c0924cdc76b382cd54cd8
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.201-cp310-cp310-macosx_11_0_arm64.whl

Download URL pyfstree-26.10.201-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
1db29814593e238309b28f693669a8a94094e776dec70e8fa55707fb47e442f2
BLAKE2b-256 checksum
How to use checksums
9e9ec0a34d761bc4e3604ad6c55cd97c9133c2df98ffbaa763c10630d34f0bd6
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.201

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