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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

pyfstree-26.5.187-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.5.187-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 a21199ae53181dfcf0df07f34421b2112333ee3d65f235baad5f273d40e591cf
MD5 e0c260ee7daaf8e76ca6030c00abe2d4
BLAKE2b-256 4f156cda499a9c958c8f60ba7bc5e7d005dcc818ebbd196ed24a7a72eec2eb5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c528bdf8d674e68e6482453053a06e139ed4009926db6a616827a91e6177e466
MD5 d854e0316f6669eaee50e4a61d4a0666
BLAKE2b-256 5f23ea91c1d148c4235632a9425cf21fc5a2092bfa881a4623811cb914385ba1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ead1a2da8f87521e92ee897d53a0230582ba1b9dc6106171170f76e6311afff5
MD5 305307b72fd50fa8afa10240d332f897
BLAKE2b-256 66de420a8b14548c39dda446ace98427a9e5312a3c67e30be63a9b7f81777414

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 20f7e837a966ae87a6945cedcb8db0ae8a74c56033f79875d4e7ad51ec680a80
MD5 33b26d6e3aed9337752f257e7e4d51bc
BLAKE2b-256 7ba649384c0c6abd9675743c8587046d6f06f10f073218bfc785d11cb10bc559

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ceb0006153d096e13dd86e5a6b2dda448f7b1254075a0164bdf756890307a641
MD5 8c157f77e133013540aaec75e5b5c842
BLAKE2b-256 e0f16d5b753394561727a5b07d476377d7122beebf734cf85c99911a60502853

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fbf8fdcbdd22cf78d724bb25e70926c6756c5eb6e0e226989f821d81b685783e
MD5 2f676df2c7a2a521c3d7d7a61faf80ff
BLAKE2b-256 bea6623e2a97756b30878ea3cde80f5c9d2428122e3d10af078593783ddc43cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 67fae276974ef1b4f6263a37fc5681b44051dd30216c65c3c3394ff492b059e6
MD5 4fd2f00edf6f1350a02c21df7a6d4903
BLAKE2b-256 b84f0f7fdf163024cd16ef6d8ee73be51f351279bb76b8f49bbd3652eedfc08e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3813c685a01953507f7babcc4f0be4853ea8f38d69bcab65f2d2f38d014d1bb4
MD5 46b25a476c3419418d0b7cc69af3191c
BLAKE2b-256 99f078048c58b9ffee2724fda853b187c8939a1cf33fc9731257efc5e2fb45e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 760b4a3d24b71da7986ba01aea48c948fe0f1ef02153fb40ce8bb516ae480f6e
MD5 ad08c4ae14f52a3e4a1435dd46874719
BLAKE2b-256 c0af15d3ba039120a34a848b35a58ca73367b9f53afec106bd48d1f0463803f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a63a0ed96333c71acf4e96a9936df15efe0f2b58c5a26dae8a62cbaa569c4090
MD5 e9ee8444e06b93832b365133dd04b02a
BLAKE2b-256 de7e2bafc165724c44ae84d016e065b140c5465a663382f784184d0f77d3b4f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 80861f484aade79966f844047cbe1336a3c8e19b4c932924afe7a90959315817
MD5 355022e14a8e2fbed96a1b9ca4cda163
BLAKE2b-256 efef64a962e7e8d3579cb4bc044b51dd0e8add4e4a1917b86ce63190c440ae2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 70df1cd48b61b0608a918b20bb5046964b35c5035e8ec6ed8ec6e76afba1b87e
MD5 0ffa0ff3fe5d7b1dcfb3c2efcdbc618b
BLAKE2b-256 52c3e1ea44d73615a66787caa8a2ac3acd4690326d85ddd3c5f485a4cf46abb5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fd0a02d1896b0af404499084e536074967ce92f470a9aaa162be911cce161078
MD5 3880aeff77e4435f571ec2aea1fd39cf
BLAKE2b-256 a780770c3504a23a50437039f7772308f6f0df8c4314bc27b9a22ca292f5c13c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0800d92278c42299142942b36c4ebad8459da338e1c6d3ec10e4c38cab36e7d2
MD5 6669f906426e946395cee5c4fb7bcae1
BLAKE2b-256 36db7df7df17de4673497457eda0bd3dda479012884b73d059531e89dc82f902

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 896b220a233795d28a59d8cf611db6582ca0edcd32c52d34823a8019d1a3dbf2
MD5 8708e70b78d1f06e86957e96ceb29a94
BLAKE2b-256 ea06ddd9b9a560587cabf2b023ede34343aeb70334a92656068f204673b8b220

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 66c55101fd62fb2b221f2d22c9ceed6c361332c948aa266cc830eda3fbf9cd98
MD5 8b225eb6c6f805bac1e2c78877bb7f7f
BLAKE2b-256 14b03f3a3cc95a1d927ddb3244a5b3f69869298e370606de366b4051022a46c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6521ae51351dcfb7ebf51fbda0147f091124814c9280724a16edc6019aec647f
MD5 65819e4dcacf9e3151f0b79603ccc0f4
BLAKE2b-256 ef80aae87abce6bc284f99a89c35650108059c3746b110e103abe97c514dd63c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5b6f24c1713a65f9faa2aa604b1cd68682f537a140a94e453f550ce8c21ccb0c
MD5 31bd1d078dc05d0ab65617514b18971f
BLAKE2b-256 d4692eb4107ed6cbdb0fbd9d73b3c44a1ead1ab02ef7e0e36bede785e5e31403

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 04bebcd4ba9af29b2595acd26c27b829f6bd78d54af733b3eb299af15ac32644
MD5 e0a2efda07ee6eeb439860de43507403
BLAKE2b-256 cdf7c958abb2358f8b143b3ca9d6ec51774e8994a6a58c68cb1f792053057f16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.187-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6aaf1f9fd8e8a186188c9f974874dbda808c07267a17362000431ecf867e68b0
MD5 5a0009919fa136a278b954f3b35c6644
BLAKE2b-256 b09976f375189f78bf50fcedd051f8c7b0bc8c5474429720dfa1deb10be78902

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