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.4.166-cp314-cp314-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

pyfstree-26.4.166-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.4.166-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 a4c1f7b7b5a8e92a1939585340fe705f0c388cba758083f591b666b4b0d87da5
MD5 659ccd4a71286ded54806ab94e97063c
BLAKE2b-256 ecbdd8be8e9f212c330934cddc0f97924d395ca432712769b7ebbcf7619b8012

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 83c8904b36d21ba258c5877a03076681984760f31a1ae88896ec59a15ac243e0
MD5 b2d0d1371ebc01f0377765c15b9dd76e
BLAKE2b-256 aa98d906a36424f18f13ff8a94ed8b40f01e245e65035f0ad67106d8306ce7ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 44cf33debb4fe9862306b7f39a25f1bb3667c794ab5aa520430e9d52da6a28f7
MD5 c6c7b34f35ca57a882889f78ac1181c5
BLAKE2b-256 8676e40ed88d25b01a907e4c083e31345b26d4294ae9869ce783f82c6ddd4272

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 88360a9d4a53f1f645cd4299b8291c2b2562e027fae0b8da5b0fe294ad33e79f
MD5 4e96cfe5f8617b9903e084c52ff6fa44
BLAKE2b-256 5e02586ab712b57a4738b64b6bf63141e8f735da9e13176b3d549a657c0c9069

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 728acc289ded0234093f8185f38f5b5777bdf08cb13252d8c781289e4c6f2774
MD5 52e5e3686a88687791c86f4b6ac9063c
BLAKE2b-256 156a45e5101a4b6b95522aeffcfbfeca83d7a156e9c34b70e51d955ac7bfbff7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 eadf6dbd394182dcc2f398d5ef56c70ca5c8541bc22df83d42470670745541aa
MD5 358b81489c693d38b6fffaacf8d9dcfd
BLAKE2b-256 cdb5a343af5dd3da7c978646b1161c0dc17b6dbac173b51abdb273c5a4591ba9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4de4ac32b32167c2029cb2d595207a479e3f83b2a7547fba5ebef5eb8f5fb47f
MD5 727a8b2c34a7720babb6642caa16ad2a
BLAKE2b-256 b1c336e52f14e0486a69ab70d1a8d4e2583127fb921f864044da063faeb5024e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 272b0c8a16821729b29503452c11c830154a0f0b3ba80bdc6a10bd8139df284a
MD5 392384adc76d75378497fe64fefc25ac
BLAKE2b-256 52794a00ccd99e2f4ab8372cc465f57c1e4043c1bd7006ecec638f03cec6456d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8b088853e9d3c11a62c0e03a86b4ff87f93f0eaeeafa2ed288f9cbad8a35a9df
MD5 929b9bff565cd282d2db8c0bb6cc4874
BLAKE2b-256 59f6c1f7da6d77fd5730dd5da18549dfad110023f3935acfe76695fab90af7ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5fb96e674a7d487cfa6e52b65f391aaf59f1d275d552798d5951018930919831
MD5 6aecced0fa6f05a3afc4fa69a317904c
BLAKE2b-256 81d84e98b38fe2160acba90bebdebce0e4e6e9df556f49803d74ce45d3689d09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 05762d08a4dca309d013e5d23171e2ef68f99d87160ee548fd7b97d445b71a6e
MD5 45a4105089d0897d4e49ba9d0cb866a2
BLAKE2b-256 462cfce8c3e7b5b97d6ef730033b59a2133327f93e37500aecd869cc2e6f43fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f16eb9ed5c4ebe84e76d6b681645bffd734eb2ad4cbaaa09c916f1dbd9ffae2
MD5 3463c5bb3588433f6ae16fb14220a986
BLAKE2b-256 9b459083977d4f62b18f4a5964478b410901bc4068e43ac9cdada52016742b0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6e698eacc23085bc86141c355eb3f70a4b4d0547933926bf6c11efc70eb2e030
MD5 728816ac992ccc8f55868e24c18f7fdf
BLAKE2b-256 e2b304d0554724851558d52058e928a6e1829bde6d67f2e5e44cf151ed3b5c59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ba6dbed3ca17e17f202631e3f5cec0e9eb9b472c151af7c8689ecf29cda0f1bf
MD5 07604cd26830907aa38111b121be1eb9
BLAKE2b-256 eb09344824333fa26d1b5bf9c298cf249bbe18a3e2e84a0ca8fcdffaa7f64fd3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 af189811075dc281c2b532b6757e89faa0218f5672e58c21556c123d1819d5bf
MD5 fbfebc3d4437339c63344b0da4373c87
BLAKE2b-256 dc927ca7b0c0de4f9459327bd88c02df7893334e4ba79d5d8642a31555e2f49a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a648c530122b1137a13c137cb164a068a4aea6a501bdfdfcb498e3ecaa2e57a9
MD5 7a716ddd988c698a2bc472ebb14a6064
BLAKE2b-256 d6544d87da00391fb1829c5005c06c860873e447e6e30cff7614b9bcd7b9b968

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 233e6d75df4507b6e1face64d0ae4bdcdcb8a0435cb156a3eedadedd08f2537f
MD5 6d55acf5c8f37fc4f8e9a17f29cbf335
BLAKE2b-256 f08f3e8ad82f21ccbd576f4b08e4d5fde7b86fa0cb66b2d6c1ffe3404b80da4b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 72d7320bb1fcd0f8443393d8dc634615fade6220a58daa20214b325f168dc46c
MD5 69afd77fa29a2e7b33429b717f5de5e3
BLAKE2b-256 2b7c5f7cf4f52bb9222ea3cb1f804e412816f4fd3e2f4a1d555fd95eeb33fca6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f005901f0e51afed31c64a525063c444ffffb19ea34d10aa5a40f6ad7d137aff
MD5 33ee5b73aefc8c647604387dd30285c1
BLAKE2b-256 0bc36a077bd343eae88ea4602368662c72736af7d227c540d35857d7860d85bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.166-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7028428a8842330906f04e53287dfd710b431ad8cd54aefa92a36c055cfba04
MD5 1d1377ac0e4fff29e27bf510b5bf0e43
BLAKE2b-256 4877dc460f1a76755ae3293f21bbd8ea0ed3ffe859c8f1756aadf2a884224b74

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