Skip to main content

Python bindings for fstree - filesystem tree sharing and sync

Project description

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.

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyfstree-26.6.188-cp314-cp314-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.14Windows x86-64

pyfstree-26.6.188-cp314-cp314-musllinux_1_2_x86_64.whl (12.8 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pyfstree-26.6.188-cp314-cp314-manylinux_2_28_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

pyfstree-26.6.188-cp314-cp314-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pyfstree-26.6.188-cp313-cp313-win_amd64.whl (6.1 MB view details)

Uploaded CPython 3.13Windows x86-64

pyfstree-26.6.188-cp313-cp313-musllinux_1_2_x86_64.whl (12.8 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pyfstree-26.6.188-cp313-cp313-manylinux_2_28_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

pyfstree-26.6.188-cp313-cp313-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyfstree-26.6.188-cp312-cp312-win_amd64.whl (6.1 MB view details)

Uploaded CPython 3.12Windows x86-64

pyfstree-26.6.188-cp312-cp312-musllinux_1_2_x86_64.whl (12.8 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pyfstree-26.6.188-cp312-cp312-manylinux_2_28_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

pyfstree-26.6.188-cp312-cp312-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyfstree-26.6.188-cp311-cp311-win_amd64.whl (6.1 MB view details)

Uploaded CPython 3.11Windows x86-64

pyfstree-26.6.188-cp311-cp311-musllinux_1_2_x86_64.whl (12.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pyfstree-26.6.188-cp311-cp311-manylinux_2_28_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

pyfstree-26.6.188-cp311-cp311-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyfstree-26.6.188-cp310-cp310-win_amd64.whl (6.1 MB view details)

Uploaded CPython 3.10Windows x86-64

pyfstree-26.6.188-cp310-cp310-musllinux_1_2_x86_64.whl (12.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pyfstree-26.6.188-cp310-cp310-manylinux_2_28_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

pyfstree-26.6.188-cp310-cp310-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file pyfstree-26.6.188-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 8119b78ca50e248ab0b97e5546d2db88cf18b1e010be4d1dbcedf1419a7c199c
MD5 4bddf37548018ecf2b33d19cf26a100c
BLAKE2b-256 877af0f46b4abb90e4e7c202fc698882906f7e1a77cc44447c3723f96ad11267

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 eb8238dea26bb686caaebbbae6a1a828fdb5c95b297bdbc60ffa3246dcd5a9cf
MD5 0d17757cba9906bf6dc1617e7956f0e8
BLAKE2b-256 acd75ac3e22ac1c33486d363d89e1c3f388269004b35594145e570f63aab68f9

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dd8b3cc59395ca0303c2531aada68c0130015f666680b775d0b49d49a7c479f2
MD5 9fc65cc706e46216a904e5502a96d557
BLAKE2b-256 7c6403204964c84855eafc329181ea3eda2dba29257d1daec4391b09249a489c

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 234d5a3c1336b55d3467ff0b1aa25b728ece21681d9c8d5af2fbf5958a537219
MD5 9503af91fd197347a169d86786cc5ad0
BLAKE2b-256 60f35f2738a02125d94171483b162abe3f5acf67b9e6ea3b72d75e9c65522104

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 60beeadd04f367f2501978eeb0e0d1562a788ebd53f7c67f5b3c451e9e76e31e
MD5 1a10fccb665d73b313d0d2e31a6fbd41
BLAKE2b-256 d156e08d1404387aedd3ad6878de5929742869d8b2577d5081cc5caa6680619f

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a22719bdec2fd2a0d8f1802e4a30ec1a336fa7dbe331e580b1e18aa5f3406de5
MD5 04fcb751670ccd24abe33a901c456a4d
BLAKE2b-256 a59c49684d67321444a6c22cd100742ce19002e0dba6a12dbd070a5b147fae9a

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b86b239f11bdd0c3e5a333359e6a7e7a190cafbdc079b7825fe848eee0707616
MD5 f783ba6fa3bd6123e8ada7c7e3a59fb8
BLAKE2b-256 692706dd26dd0b902ffb1e1c8eff0ced94ed92df81494282d17b057ea30664f8

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ba89a5fa955e01f3cd9929bc7d8833a957718a37f978e4cc1e8577e938d7a7c5
MD5 31cd1c5eb694f13aec30f4110b5e0b88
BLAKE2b-256 e3d12c0b197995213113a0c96b4f3c4da36190da788f3cb5e9bdfaaebd7c24c5

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 011f102441bbaccbfd893d980ed44147d18db31ad6525a88fac41b532bdc8686
MD5 a5cd6082afb70a8add26808eed578bc9
BLAKE2b-256 953bfb657913a71384e76b6be62d6180b2f3f4f36b46fc1873c4d9995fb3de49

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 18131f194a379af65287523328089294f20ecb7387ad56e9d77b111347f4843d
MD5 6ff9275a5cab5fff55681a1c8f24059a
BLAKE2b-256 9a4c81835f7e44cd4e8c36b22d8d0adb0e1ac08e47d378716617f4ce07d136f1

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 96fc33d2d93044cb2d30015074540e8ea24a8c4fe74e3016d589e5b3a06f53e1
MD5 35561c0f6a11fa97be8b598bf433cbd7
BLAKE2b-256 aa8316ded1e831be7c9b6c268b15c8986043f4aa4ee5e59c01f8de6a88cfc704

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6e08266625c1efc625589bca79e7c6de6e8e43ab4baa19ed2343bf3ad74e7983
MD5 508bd934ccda1413268c10422460a414
BLAKE2b-256 12ecbd6ec3b1ea38cf44bf315d8f7bed83edb7ecbcd9f8ff5b95ad14d7d974a5

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 558178010e9edb738c1bb0b74a06aa5d748b39c8dce88c3b2564eebcc95ecec0
MD5 21673cfae212827aa6c3d3f66914ff92
BLAKE2b-256 64ec0f5f6eaf0c5cc2c0fa07a24fe04c7c1a86a8c3e5ec38d8728d29b04b9560

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cce429e5a070a69c14782d9198e61de5484e22e6245a98dd09b305448d259c7b
MD5 e361a9ddf6fcf433543ae6994ddd2729
BLAKE2b-256 7ba4b231c008a4dcfc1f38c91d389bfc711799fcfbc9517473a1ccbd11017754

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f206f030b05573d47b5865f7e5b0d12347c832b653e0879548bb9022f29efd4f
MD5 da41f31f80996aac34c30818495c23b7
BLAKE2b-256 fc864c4978bfcdfda5967dfb5ebedc6aaaef073185322141a4e2cca55b794eea

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e9683067d56c4aa70aeaf25555f05569d3945906967a97e2e7676c6d4d9b839d
MD5 61c7f380368b2cbb10038e639d2c5885
BLAKE2b-256 2ae24e62325539ed3c8d92dab5cebfca409d4b8e59d453a97f022ba9bad1f715

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8ab49932773b90053349517cfdf451c098a90e039bc81f3e05778f37a265395c
MD5 e3a265e6d6a3e540f8740127d16a4426
BLAKE2b-256 bd3475978b3821baf6ac37c1f821a973b02e40001860585a11e21469c3db11aa

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a1f92c0e5239a262b75652b59e4e912b7977ee14e7bb66166458ba9c7d65041a
MD5 4fb8f521f4236ef1a0ddf60202ef7159
BLAKE2b-256 5ff815a944eb1abaa039e7bb44e45b4a9a523b437be5f3bacc4290251a46aca9

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d36bd10a31b204547f19f7f5df2b4e4738b2b24e59c0977b15507691de7762e6
MD5 3a81ada649f422f6e53c99c478f09e9f
BLAKE2b-256 ef52e542494bbe8b8332c552042632e14689c0e98ea88ee54000dffefb5c7155

See more details on using hashes here.

File details

Details for the file pyfstree-26.6.188-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.188-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 72609186fa1c2114bdbed8d72231a3a8500cb4a02a98bec2c4db6121d7b46b05
MD5 d4e11b28abe72c0da99a89504caf42f5
BLAKE2b-256 631234c114d262757cde196345eab0dfa9c0d9dc84556553013f0b31d9ee33bf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page