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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

pyfstree-26.4.168-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.168-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.168-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.168-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0881d6bc05afc95594ddf1c0c8a18a7803acafbc762004cbb6ec2ff779af8ef2
MD5 56376c1e7a89ac3dcfc0eac68e07e491
BLAKE2b-256 0c89549ffc2b1d9e0ff68dd50582c8a0d87844ff92e00fa3accb5ee1ca6dc848

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1199b75fb5b29e2eb829a4721ef96df3da76cc5208ba57ef42155998decb51c3
MD5 1efb07fc2468a0688b57489eab17219d
BLAKE2b-256 59944b48027d3ca7d59258f057edd86ba64ac317c98ee5cde72cefd1c6778e26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4b0c3312682ac916b074a4bc0f10d3cd04ad9b15417e7efb25210bd51bc97d8e
MD5 8efd968e9fd45806486a2829d811e7a7
BLAKE2b-256 33e39a6ce9a86a80884235780c99442a1dac67bfc8966c0ef92abbcb938160b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7d6eb004c078b0f716ea496cfa5a690f4ad233e3b2599f8f5b7d5ec13d8e7e8
MD5 cff17ffe7a678518c69f56d14439ee56
BLAKE2b-256 83ded018569903c04613497c94d23177b89a2e2872b535de0dd35d9b86666020

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d9a5f6d3f0cbd43cf8690a6669a1fcfa9170341fe0ea1216c0189bbe5f055048
MD5 067551949e2de28eb48d74d636974643
BLAKE2b-256 47a1dfb674541a1e8e7796b5de4b9e4c00f13c9ce3b7d889bc6f150336d484fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1e55cd32288c55937211b15b6e65f07084256e3ca0675d57e4a90e785b27118a
MD5 4987c7149e863ed02277f41b17a1e28e
BLAKE2b-256 fb9cd88499774249c9b43b5b22b8ac770eb02ba2545cc832e35325f226ca8b0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ea59cda222ae24cf7d01faa2c4ed58ea0cb22502623f31a462e486a0e4f17a5
MD5 69baa10aac6286a421fa300cd283c8a0
BLAKE2b-256 8a6c7dee2bae36b739c29c319441e8dfe62ec1762e18a187c2fe95814a116ef9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 04939188a198b814e486bfa369168bc7a0f8e74d65303e282436f7d6426626c6
MD5 3be51d0493efd8a73df68d3dfba94580
BLAKE2b-256 d13584832d70689a671431e01c6668d46a77bd08742292183fedc9370535ef9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 53957a9a1aa28668916748014be9b1ec4eeb4ff2d0bbc62c661f25a5b9f25466
MD5 db1f6e4af85201fab01e586238a844e4
BLAKE2b-256 7ead63f1f0c0b17182599f188c11c13cf94614a363bf249d8cd762e96c80c759

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8dc31ee44c17424f51450471d22367cde944641205d5d25d601b826876b35f08
MD5 6c56823085ff18c53b058e3e69484ae3
BLAKE2b-256 fb5846bf3f83930cc971f259c11d949f921d7605abca7083df43d8515c8a1454

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e34ea7e595ef1d7830661261c1856373ab7d29678c36f275cc381b87785473ee
MD5 91ac18297f32421d071102642e78439e
BLAKE2b-256 1194b3270d4376f13472a24b6ac3a844e2267cd873957f60345cfd7d3cf3effc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 95c7c996f0c1e6a3e007d3f8e1b5aa05d3e9981f8ade68decb1355ada73dd71f
MD5 c4b69d3ece56b313fda0e71d92344941
BLAKE2b-256 0a0f5cb75e68418c18684900efd3e4f400a9a6e75caa2aed271395c6f23b4998

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d446e7e78017f8d6b135434a6fce3ffae33079da24438b90d63d1ad35b4b9417
MD5 0c80c127aaec62127e516121d028246a
BLAKE2b-256 4bf2057d4482c1a12f15b7991a260d5e6b2cfc035e266cebe2dd0e516500d43d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 05bf368cf3fde39485dfc5d0dbb2269ce673a9629efcd7dc70f8b0ad6062b72a
MD5 53db9f2a5bdadfd30d652616e4037f87
BLAKE2b-256 7eedc1e20bd81085a55f4e2298eb4d6de4d743c031ec624c118722f1b693cdce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3e9685383caa34031dd0164f29f2c2abc992c962522653049f6350037af0b700
MD5 c9bdea3de9984d45e885ddba622bbd44
BLAKE2b-256 8a0ca00383bbfd9fdf688c17a0efea37ec9f86d68448289089fc8bda7ad69cc9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aedca71daf83f489d171e31c8847b14d34a4dc65709136b176167c491ffff288
MD5 5fe120aa165d79dbd20e997a7475ab2d
BLAKE2b-256 12166a100c14510977fdfc1482e961b7fccb606a4f314d4fc208d489660da252

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 db6b715c654ac06fb0672469c868ee884b470ca42276ad508caea8f76475fdf0
MD5 c91a562578a585ebcb68ed9c97d97e9c
BLAKE2b-256 52e7710b4ac86a87f3e039eb33c99b1026c2ad69945d07c5c0edb589dcf9e912

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a993e66985afb51f0265988004905bc40d08d18135f0d2a9bbf651ea2e406fad
MD5 3842dde2c37fd73a99eccd6ebc20ef8f
BLAKE2b-256 7df969f5968f6e7963e9f5fca83185034231978183a23f0cb7254e4f507a8bca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a7e2de772cd5dfe208d2c30d9360154b2a63918c35d78a259d80fcb72e5e2709
MD5 d236d56f760b6543ec7fcd109e8acc16
BLAKE2b-256 4306858046ac6e5b98eda6ffc83c628dc5966844c1910053e811c91a17206285

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.4.168-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb486fb0f0223b4a5454ed10585b08a51e506bce210b298b4e99b445ec9f69c8
MD5 1efdc4f2b7b5b38bcf2db4ca2fd71c51
BLAKE2b-256 3e80e372725698235f314874dbf4423a62748fb34abd24baa8f15725a1a48367

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