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

Uploaded CPython 3.14Windows x86-64

pyfstree-26.6.191-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.191-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.191-cp314-cp314-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pyfstree-26.6.191-cp313-cp313-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.13Windows x86-64

pyfstree-26.6.191-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.191-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.191-cp313-cp313-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyfstree-26.6.191-cp312-cp312-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.12Windows x86-64

pyfstree-26.6.191-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.191-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.191-cp312-cp312-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyfstree-26.6.191-cp311-cp311-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.11Windows x86-64

pyfstree-26.6.191-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.191-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.191-cp311-cp311-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyfstree-26.6.191-cp310-cp310-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.10Windows x86-64

pyfstree-26.6.191-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.191-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.191-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.191-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 897db661f667632f508fbe9da0dddd24d4092123bfc0d4c6afbc02ce4709a1f5
MD5 ed5950db4449aa01426fa7ede94cecd0
BLAKE2b-256 0d54bd799263dddb5d7a939eec4914124f8f3feafc47b2b41544d6a52f402ca3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5d8e5a7154287ea77cd3e2b02fe7d276ffee56c0c893a0fe3c2f01e8cc702479
MD5 7648d310112963be0698ccd3b39c973b
BLAKE2b-256 3123ca8dbd3377592931051db575c5a344856ec72c56930f8f937ec6c970cc62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d3926272a11ca901609aa2dec7e42a7ae1d826f5aad0f2b763db872d8d91dadd
MD5 ca208a230c6833b1f62500d0c4bdab9b
BLAKE2b-256 7c8cde8c2394dcd07b625084c449cb71e1c471440a6c80fdcb9932de04b3fd9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 64fd9901abeaad17080dd9e247bec6fbc8735bf7c1b0af510c1f8ca1e494e43d
MD5 88a6da93d0d895010b0e55cbd843fc59
BLAKE2b-256 191c6d6485496d90f03f4c1dcc5c53bff8e2b78b79f50cc5855802600713f2ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a87f48735f1bb33393a2d14a3a522f99ceab2d6823d3fabdbf37b4ff1cf742aa
MD5 6103ca36b15a36a0c5f042240b4f9fdf
BLAKE2b-256 6d85674b042e92a18009f3b3d373a1d37e1c1c89b15744c4646bbd73f55a9aa8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 02db38dd28dc6689e64a6bf761539e907c592f66cee40165a2a82eec15e6bc4b
MD5 9f2ac8198f60f628fad7170a47997c44
BLAKE2b-256 4f7141e47668306102cdf3bf5d3a4b05f5b5ec414901c02a7dbc38bb1a8ef1d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b1aba10a80249516a1ff2490bc0c7a3f8cfdf7b38800ab55cc335a51265ebb39
MD5 f044f6e8dfe59ef3a3c668c9bed05012
BLAKE2b-256 f92ffe4d0b1efb2a7687c1c8fd18ddc27a6655fb7c95a0fcc6373242ae7161cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 208463d573f185a5eace4e5050cd5d66f228b25fdd0f2b8c048ce9ec89387910
MD5 7f5d9d4e189bab8a7f50985e23f424c4
BLAKE2b-256 eebf2fbedd4f6c8b3ac3bae54a4cf0ae7413452500f6eea46468deaeef9b396c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 714153929ba8461aca0b34f2f595c9f552d3d69db925eb4112f6af981b461404
MD5 477f44bb0aa999a81e0bc5965a1bd323
BLAKE2b-256 de9835492cf8d1900d698766206a9023feb8b6875c89541fde4787f886973e18

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6e3431a5d6e42b645701ae7f3f844ed7836ad329cc7ec368081fed46ae0802aa
MD5 3819dc3052ca286e6f3706ae962020f9
BLAKE2b-256 f74302332ad190af124e7e3f0a0edba035d4eedd1c5c9fe2a2fbef1dffb5acc1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 39a1601c4115cb257a728788abe581cd3a6e184cf2a4888d05cec737cde0fdb1
MD5 c15e37adfa2ea875ef2f298ddd090f9a
BLAKE2b-256 18a8528822c8293f21637bd9d783de9a48b905bc55e5efa9cb4de10501fc7b25

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 abdbd82de0fd362d09d862085359655769bbf0ce5b4e517fa09a145bca529e16
MD5 18347d78994e00a1a4a46c4ac092caf4
BLAKE2b-256 da7e77c04057daf61c1c43b1d27a4b8833be3836e502a1755932ff8c3d1cc1d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 10901b425cebf9460b1c768cb422f86bfcfac05cc7f972c82fa8e21faa618078
MD5 e0c79cfd089ab8ce3f857384592bc8ba
BLAKE2b-256 bc8a185c82d1e0ec749f5786745a1b8e861fce3f7f705c5a29319de7fd98be77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 75cdee65e5f387770b0d8c5633ca67dea4cc5266dcdb7a3c1ef5251c239e4873
MD5 24758ecf3c51bd20ba8ae5a725502dbc
BLAKE2b-256 107896f3509ddeb7940309ac304a4b04ca09872b78b4028565ef5eaff7fc4e9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6ba6cc96b827c588a78dbdcd30e302082ef582bfefe07823c5aefd1cba85a8f2
MD5 e4d83fbed2dedd3c9a25d176af041dd1
BLAKE2b-256 173b948ca115168fb4bbb555b75b7d7d1b2f144dab92f2f09666466d54d77f6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fd3739fc719b2a008a6a4684b751277adc8d8c3c04b7d489bbd83fe260788add
MD5 ac6740a4ad0d0d35244d3bd346264ed4
BLAKE2b-256 24dfead89767d06a0fd74cd3b844bf691f64ee0d0bca9645f3cff785ce2e449d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 aadfb49e10e3d50a6719bfa60f2d28749d7f80d848e53600b61aa75f5ab45c34
MD5 5c6f51c371681951b3c380e0e4e2c982
BLAKE2b-256 ef18137a6ab0f1082c42fea2187168746e6edd8b1276e0b96d6788d6de6034a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1f967a58a94a73b8ee749920d1be78ecb506a86fc0b01a551d396fe25ce5fd1d
MD5 7cb3a05aa80ffd68105dd2719081db9e
BLAKE2b-256 cecd117f283ffbf0a4a33f85e0d9916694a656b5cc2f8f12bce39550cbdcb79e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e46615ec3dced96e442cee7291e81ca125398cd8ba5404dd9005d14a2ef791f5
MD5 17a6f461b0896b641e676c3844540b04
BLAKE2b-256 b8624f432305d70f051c45f65f21f16a3cf4404250b041268e0692ae677fef2a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.191-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a6c0aaa3be6b618f1d3d8cc75ccb66ed7bf265f541ef38af040115508386d3f7
MD5 ade7c9967ca46a90319a8ebf9ecf28c9
BLAKE2b-256 01a5af72a3ec121ed1ce09b6f884cf82af20f37a588d8c54b15800112a7be0f1

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