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

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

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

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

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

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

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

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

Download URL pyfstree-26.9.198-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
11bde9b035fc56f4eb09810ed79f11eb4843d1ce5c5bd9cd5424629225fa4e2e
BLAKE2b-256 checksum
How to use checksums
2217d45a3f9bbaf1f77a713086168a2ce689158ea0030f5eef02087dff2a53af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

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

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

Download URL pyfstree-26.9.198-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
49e3e90597981c9c34497e9427948a7868ddac4349fa6121d9b73432c289b957
BLAKE2b-256 checksum
How to use checksums
b564675f4051b464c9e59e32c5e67eca58d3c8dc4ecb76a26d97efcbb483bc17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

Download URL pyfstree-26.9.198-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
29c75ec23b5ff4674bbeca6c662e977a3467df3bcadedb08292cb2dfe83472de
BLAKE2b-256 checksum
How to use checksums
3a5ef649132752233cab62f0a4f06f63d23cf433f550510cc31cbb962e6bb108
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

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

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

Download URL pyfstree-26.9.198-cp312-cp312-win_amd64.whl
Size 6.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
6246ca0d017ef9f75f33a6152ca1ff3665f88d601ad75c29f8f5d1df2d95a3a8
BLAKE2b-256 checksum
How to use checksums
80491765b5378dd7bef9080ee478b854e52037ec5aa1ddd7fb1234d02f9947b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

Download URL pyfstree-26.9.198-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
8a323d855439c9c02f7ac214dbef38a2950237725b20b26b5c73339b02d6fe84
BLAKE2b-256 checksum
How to use checksums
79c72cafabab88f3853720c0b55696e8bc32320b9929ee8c3489da8ece359227
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

Download URL pyfstree-26.9.198-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
6181ff7d08f7ed24cbbfd99151b81cece9687111e9a2df53ecaa9d64f22db249
BLAKE2b-256 checksum
How to use checksums
77323b303f520c961aea2942a966491a4a1a0fe8a6f4ddc1a12ccbbad421f256
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

Download URL pyfstree-26.9.198-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
7877d840c66e087bb32b2a3d14604f7b8b319cb7491c8f0b3236901df00f8c17
BLAKE2b-256 checksum
How to use checksums
12c72ce4e1f20187f54c1c9972ebd8a146ad8200397a393cf8ec2650b050d73e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

Download URL pyfstree-26.9.198-cp311-cp311-win_amd64.whl
Size 6.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
37a7b64f9a9b187f5f59d18aaff09e2510be0d95e512626bf67c116d4419380b
BLAKE2b-256 checksum
How to use checksums
90fff5f069befc8aa70d15ec7ee63647e8974dc37a1cb802e14a4628fb69ea53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

Download URL pyfstree-26.9.198-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
924de9ccc56e635e001c6872e0fb8f0ed9636144882bf2574969d76812522f61
BLAKE2b-256 checksum
How to use checksums
440f1a5d5572a08830d49b008abc1e8d8e27f8d2833be6a541d73495c2c0df1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

Download URL pyfstree-26.9.198-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
972ff572d3f58c1eda3986d97d3ffbd134ce069fd49008374de85e2824b20d9e
BLAKE2b-256 checksum
How to use checksums
e3fe45f6318a23b095de48738007164ec73399738c64500f3a9f1697b609d48c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

Download URL pyfstree-26.9.198-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
855bbf076d198524476a00ee827ecadd01980c5687e0d68cc8fd66884fdc6f25
BLAKE2b-256 checksum
How to use checksums
addcc6cf423f48ad79422ab24354bdc4795b5ff2d480bf15a3cf72cba35013c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

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

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

Download URL pyfstree-26.9.198-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
8cfaa35dfc90534a1165ade616ca4644d1d29253a856645d6447e57af9dbf18c
BLAKE2b-256 checksum
How to use checksums
d3e50fc8baa2cbd4e571e4c72e99b366f0f144dfe3f30de485239cc2c2bba76b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

Download URL pyfstree-26.9.198-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
cb7c18735f7b9f302392a1e56f591f30caf8c6351534e097ffebb36201315d40
BLAKE2b-256 checksum
How to use checksums
4f356f4450827a01f99e4ccba82ad624ec5a8a42e408b26940448e5a4e23ced4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

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

Download URL pyfstree-26.9.198-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
73a471c5b3e9a20644c42dc52fe50d0f3c90435179a9d6ff83b7a877ef9c40f3
BLAKE2b-256 checksum
How to use checksums
2c8836593955a253a719d01a3df6a50cba48ab582c7b647ab82b97ecdc7ac495
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Security for pyfstree 26.9.198

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