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

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

Download URL pyfstree-26.9.194-cp314-cp314-win_amd64.whl
Size 6.5 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
3da4eebbfeb003f716b1f0eb921d693273447fdd132e0f6a394a48c4768a01c1
BLAKE2b-256 checksum
How to use checksums
c5bd207438fd08d93e9b1043a3d0d025960ab4ecec37c7f17b6d1f3bc6a83ac6
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.194-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.9.194-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
5fa2bda03058b91a540a43fa35b76ba303871d85ca3193daea394412c60c43f2
BLAKE2b-256 checksum
How to use checksums
e5b7b3efe8289fb9addc4edb971d305031a779a4e06fcd436cf3ee1e6d8f0e22
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.194-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.9.194-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
d48268cabbd5b18ced0ee62e393bb3f0373079b42d428998c33723d85814fa3c
BLAKE2b-256 checksum
How to use checksums
f07b154cff7d305302e53f31a060cb04eb98e47a4ac522c7de3948c9773c1fd4
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.194-cp314-cp314-macosx_11_0_arm64.whl

Download URL pyfstree-26.9.194-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
5039a21dff3e4c8e1f52b90e0e5cb1f7253ee878bed0331069ec41d794199f4d
BLAKE2b-256 checksum
How to use checksums
9011e2f51616efc0a3e95f133af2632e911ca62e51a4d9aa025ba4f1c3aaf32f
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.194-cp313-cp313-win_amd64.whl

Download URL pyfstree-26.9.194-cp313-cp313-win_amd64.whl
Size 6.3 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
257bee25b02b282d68390a1bdd3be0ac9af0f7417962b94eecd6c11405cccd81
BLAKE2b-256 checksum
How to use checksums
530f61ec040055bc399aa33a82c5227a9f4f20424d6bf0d5113eb0b0caeca183
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.194-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.9.194-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
bd10e6b6bfc42e3ba74a057b195dcff6e211ec2f2f787403475db72148d5aec0
BLAKE2b-256 checksum
How to use checksums
f15c7ab3802d73b61bc5a7b37bac53f676165291ed277346d8706ea55ee28212
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.194-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.9.194-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
913cabc660e8eb6920634df9ad9a908bfe9cd15f7b9f3c5c16cdb83b3a956b39
BLAKE2b-256 checksum
How to use checksums
26082e58d9f560901516140d241c5a6c73211f16d55c4e5c4e8324b499d1a402
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.194-cp313-cp313-macosx_11_0_arm64.whl

Download URL pyfstree-26.9.194-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
3936e84b5ddd0cb0be19613404906bd877f1b72c29c167b81aaee9913e54f24b
BLAKE2b-256 checksum
How to use checksums
17d4ccee9ae4caca4966c171fc32f55d6bd59e4da89a8a9283bcfce7ca42b53e
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.194-cp312-cp312-win_amd64.whl

Download URL pyfstree-26.9.194-cp312-cp312-win_amd64.whl
Size 6.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
9e135fc233e102c55c26056b428df7c969da9b45cd8679f20355c7229eb0a650
BLAKE2b-256 checksum
How to use checksums
bc172506e9b8fe35f231b279b84649c7b036289a73ea899e594af7308139b853
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.194-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.9.194-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
0f8ab6a8d47823875fa91e97461fddbebf8a1500da2ca7ece6e4ff5c6d484faf
BLAKE2b-256 checksum
How to use checksums
ab12077bc41f4718fc939744e6003cee206f31023a925bd763eb63fa29c6912f
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.194-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.9.194-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
b5316877f4c704cff3e90f43711a460abad77cb68d54fafd40fabf8be7a82851
BLAKE2b-256 checksum
How to use checksums
5d2e164efc068f5e0be679615bca58dd7c489b4d641950089350415f3465f321
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.194-cp312-cp312-macosx_11_0_arm64.whl

Download URL pyfstree-26.9.194-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
1ffc1740022e526007416093f999dcd6ecb23eabaa4eaf0d9dc1df0aab975853
BLAKE2b-256 checksum
How to use checksums
2e00298995b2717112f9df6e208b88e788aaae94ad7895b96345b8c8307b631b
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.194-cp311-cp311-win_amd64.whl

Download URL pyfstree-26.9.194-cp311-cp311-win_amd64.whl
Size 6.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
d9722f2e3a1b7760dae692d6c7d715996d6df8c09b84f0601985c31d4637d334
BLAKE2b-256 checksum
How to use checksums
8a545045aa520dedb448d67f6b5498dcf1fedfe167fc67ec76858032d456eeeb
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.194-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.9.194-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
ce89455e76d1f0c1b4e775e62a537be3f73db90d63c86967945ce81c5ab0132c
BLAKE2b-256 checksum
How to use checksums
6c11a24efad312b5653258012241868d1629a7c5e6ccfa914248e71c7ff0e672
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.194-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.9.194-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
0a40eb00749accaa06df47528e4356299fb13fd9d2ba8fcaff7d15cbcbbbf5ce
BLAKE2b-256 checksum
How to use checksums
fdbdefa95567e9fbb96516e958da084740319c6f69231b5a7a8f877ca946235f
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.194-cp311-cp311-macosx_11_0_arm64.whl

Download URL pyfstree-26.9.194-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
65cab1250fbcd9a02e2ca433f82c597e7b306e0d6852f9a0942e3ed9b66da7e1
BLAKE2b-256 checksum
How to use checksums
b47002a74715018f8085083211924ae42dc2b09a0031aea047cdcd623a58022f
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.194-cp310-cp310-win_amd64.whl

Download URL pyfstree-26.9.194-cp310-cp310-win_amd64.whl
Size 6.3 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
4a9ce78865c67d381d6629591b0d22b9fcf79f698c241064a11c67c68b9ce276
BLAKE2b-256 checksum
How to use checksums
8220f81a830129ca1076decbfb3d71b6cc4512e0d3e6441acc70e1c902840491
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.194-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL pyfstree-26.9.194-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
0a3c0c084864d883efc29cc444fbbaa61380f50d87524d50b81c78dc91869335
BLAKE2b-256 checksum
How to use checksums
24941bb03ca1a2633c958a4113dca3309b12ae5d056e306d5600619ec1f4fffe
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.194-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL pyfstree-26.9.194-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
f53f9325f352931f6c4d43fe805750184a28b4902bd949b23a956e333b23ebc3
BLAKE2b-256 checksum
How to use checksums
d6433db91cbab625d437245819c58b10ec22253ce179a613aeba75501c65d53c
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.194-cp310-cp310-macosx_11_0_arm64.whl

Download URL pyfstree-26.9.194-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
2a4bb01b3a1b554f7305736f7de9eb7ea6cd31cf9f3100906a0f901473afebb5
BLAKE2b-256 checksum
How to use checksums
5c4f8403b2562b323d9e2d8fd50ab057999172fa33971426b6d02c2f986c7f12
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.194

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