Python bindings for fstree - filesystem tree sharing and sync
Project description
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.
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyfstree-26.4.166-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 6.3 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4c1f7b7b5a8e92a1939585340fe705f0c388cba758083f591b666b4b0d87da5
|
|
| MD5 |
659ccd4a71286ded54806ab94e97063c
|
|
| BLAKE2b-256 |
ecbdd8be8e9f212c330934cddc0f97924d395ca432712769b7ebbcf7619b8012
|
File details
Details for the file pyfstree-26.4.166-cp314-cp314-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp314-cp314-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 12.8 MB
- Tags: CPython 3.14, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83c8904b36d21ba258c5877a03076681984760f31a1ae88896ec59a15ac243e0
|
|
| MD5 |
b2d0d1371ebc01f0377765c15b9dd76e
|
|
| BLAKE2b-256 |
aa98d906a36424f18f13ff8a94ed8b40f01e245e65035f0ad67106d8306ce7ff
|
File details
Details for the file pyfstree-26.4.166-cp314-cp314-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp314-cp314-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 11.7 MB
- Tags: CPython 3.14, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44cf33debb4fe9862306b7f39a25f1bb3667c794ab5aa520430e9d52da6a28f7
|
|
| MD5 |
c6c7b34f35ca57a882889f78ac1181c5
|
|
| BLAKE2b-256 |
8676e40ed88d25b01a907e4c083e31345b26d4294ae9869ce783f82c6ddd4272
|
File details
Details for the file pyfstree-26.4.166-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 8.4 MB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88360a9d4a53f1f645cd4299b8291c2b2562e027fae0b8da5b0fe294ad33e79f
|
|
| MD5 |
4e96cfe5f8617b9903e084c52ff6fa44
|
|
| BLAKE2b-256 |
5e02586ab712b57a4738b64b6bf63141e8f735da9e13176b3d549a657c0c9069
|
File details
Details for the file pyfstree-26.4.166-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 6.1 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
728acc289ded0234093f8185f38f5b5777bdf08cb13252d8c781289e4c6f2774
|
|
| MD5 |
52e5e3686a88687791c86f4b6ac9063c
|
|
| BLAKE2b-256 |
156a45e5101a4b6b95522aeffcfbfeca83d7a156e9c34b70e51d955ac7bfbff7
|
File details
Details for the file pyfstree-26.4.166-cp313-cp313-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp313-cp313-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 12.8 MB
- Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eadf6dbd394182dcc2f398d5ef56c70ca5c8541bc22df83d42470670745541aa
|
|
| MD5 |
358b81489c693d38b6fffaacf8d9dcfd
|
|
| BLAKE2b-256 |
cdb5a343af5dd3da7c978646b1161c0dc17b6dbac173b51abdb273c5a4591ba9
|
File details
Details for the file pyfstree-26.4.166-cp313-cp313-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp313-cp313-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 11.7 MB
- Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4de4ac32b32167c2029cb2d595207a479e3f83b2a7547fba5ebef5eb8f5fb47f
|
|
| MD5 |
727a8b2c34a7720babb6642caa16ad2a
|
|
| BLAKE2b-256 |
b1c336e52f14e0486a69ab70d1a8d4e2583127fb921f864044da063faeb5024e
|
File details
Details for the file pyfstree-26.4.166-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 8.4 MB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
272b0c8a16821729b29503452c11c830154a0f0b3ba80bdc6a10bd8139df284a
|
|
| MD5 |
392384adc76d75378497fe64fefc25ac
|
|
| BLAKE2b-256 |
52794a00ccd99e2f4ab8372cc465f57c1e4043c1bd7006ecec638f03cec6456d
|
File details
Details for the file pyfstree-26.4.166-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 6.1 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b088853e9d3c11a62c0e03a86b4ff87f93f0eaeeafa2ed288f9cbad8a35a9df
|
|
| MD5 |
929b9bff565cd282d2db8c0bb6cc4874
|
|
| BLAKE2b-256 |
59f6c1f7da6d77fd5730dd5da18549dfad110023f3935acfe76695fab90af7ec
|
File details
Details for the file pyfstree-26.4.166-cp312-cp312-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp312-cp312-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 12.8 MB
- Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fb96e674a7d487cfa6e52b65f391aaf59f1d275d552798d5951018930919831
|
|
| MD5 |
6aecced0fa6f05a3afc4fa69a317904c
|
|
| BLAKE2b-256 |
81d84e98b38fe2160acba90bebdebce0e4e6e9df556f49803d74ce45d3689d09
|
File details
Details for the file pyfstree-26.4.166-cp312-cp312-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp312-cp312-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 11.7 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
05762d08a4dca309d013e5d23171e2ef68f99d87160ee548fd7b97d445b71a6e
|
|
| MD5 |
45a4105089d0897d4e49ba9d0cb866a2
|
|
| BLAKE2b-256 |
462cfce8c3e7b5b97d6ef730033b59a2133327f93e37500aecd869cc2e6f43fc
|
File details
Details for the file pyfstree-26.4.166-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 8.4 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f16eb9ed5c4ebe84e76d6b681645bffd734eb2ad4cbaaa09c916f1dbd9ffae2
|
|
| MD5 |
3463c5bb3588433f6ae16fb14220a986
|
|
| BLAKE2b-256 |
9b459083977d4f62b18f4a5964478b410901bc4068e43ac9cdada52016742b0c
|
File details
Details for the file pyfstree-26.4.166-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 6.1 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e698eacc23085bc86141c355eb3f70a4b4d0547933926bf6c11efc70eb2e030
|
|
| MD5 |
728816ac992ccc8f55868e24c18f7fdf
|
|
| BLAKE2b-256 |
e2b304d0554724851558d52058e928a6e1829bde6d67f2e5e44cf151ed3b5c59
|
File details
Details for the file pyfstree-26.4.166-cp311-cp311-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp311-cp311-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 12.8 MB
- Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba6dbed3ca17e17f202631e3f5cec0e9eb9b472c151af7c8689ecf29cda0f1bf
|
|
| MD5 |
07604cd26830907aa38111b121be1eb9
|
|
| BLAKE2b-256 |
eb09344824333fa26d1b5bf9c298cf249bbe18a3e2e84a0ca8fcdffaa7f64fd3
|
File details
Details for the file pyfstree-26.4.166-cp311-cp311-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp311-cp311-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 11.7 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af189811075dc281c2b532b6757e89faa0218f5672e58c21556c123d1819d5bf
|
|
| MD5 |
fbfebc3d4437339c63344b0da4373c87
|
|
| BLAKE2b-256 |
dc927ca7b0c0de4f9459327bd88c02df7893334e4ba79d5d8642a31555e2f49a
|
File details
Details for the file pyfstree-26.4.166-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 8.4 MB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a648c530122b1137a13c137cb164a068a4aea6a501bdfdfcb498e3ecaa2e57a9
|
|
| MD5 |
7a716ddd988c698a2bc472ebb14a6064
|
|
| BLAKE2b-256 |
d6544d87da00391fb1829c5005c06c860873e447e6e30cff7614b9bcd7b9b968
|
File details
Details for the file pyfstree-26.4.166-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 6.1 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
233e6d75df4507b6e1face64d0ae4bdcdcb8a0435cb156a3eedadedd08f2537f
|
|
| MD5 |
6d55acf5c8f37fc4f8e9a17f29cbf335
|
|
| BLAKE2b-256 |
f08f3e8ad82f21ccbd576f4b08e4d5fde7b86fa0cb66b2d6c1ffe3404b80da4b
|
File details
Details for the file pyfstree-26.4.166-cp310-cp310-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp310-cp310-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 12.8 MB
- Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72d7320bb1fcd0f8443393d8dc634615fade6220a58daa20214b325f168dc46c
|
|
| MD5 |
69afd77fa29a2e7b33429b717f5de5e3
|
|
| BLAKE2b-256 |
2b7c5f7cf4f52bb9222ea3cb1f804e412816f4fd3e2f4a1d555fd95eeb33fca6
|
File details
Details for the file pyfstree-26.4.166-cp310-cp310-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp310-cp310-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 11.7 MB
- Tags: CPython 3.10, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f005901f0e51afed31c64a525063c444ffffb19ea34d10aa5a40f6ad7d137aff
|
|
| MD5 |
33ee5b73aefc8c647604387dd30285c1
|
|
| BLAKE2b-256 |
0bc36a077bd343eae88ea4602368662c72736af7d227c540d35857d7860d85bc
|
File details
Details for the file pyfstree-26.4.166-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: pyfstree-26.4.166-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 8.4 MB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7028428a8842330906f04e53287dfd710b431ad8cd54aefa92a36c055cfba04
|
|
| MD5 |
1d1377ac0e4fff29e27bf510b5bf0e43
|
|
| BLAKE2b-256 |
4877dc460f1a76755ae3293f21bbd8ea0ed3ffe859c8f1756aadf2a884224b74
|