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.

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 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 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 Distribution

pyfstree-0.1.0.tar.gz (46.4 kB view details)

Uploaded Source

Built Distributions

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

pyfstree-0.1.0-cp314-cp314-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pyfstree-0.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (421.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyfstree-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pyfstree-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (420.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyfstree-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pyfstree-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (420.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyfstree-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pyfstree-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (418.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyfstree-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pyfstree-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (417.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

File details

Details for the file pyfstree-0.1.0.tar.gz.

File metadata

  • Download URL: pyfstree-0.1.0.tar.gz
  • Upload date:
  • Size: 46.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for pyfstree-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5556f9fc5aa93542c279b2d0ab7dc8f3d229e1f2430e0ae5685a1ea4cdeeb9ed
MD5 3aa3b74dfce562fd49eadf2341b8baa6
BLAKE2b-256 57e3d24e7ac881b0fc2a86fe41f1ed5208aae38d2a842a71b52d44f088e757be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-0.1.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 93201a1c150bec41ea907f8c3238aa2139313c4b3b7729631559dd8177da698c
MD5 bb4a1dcfee5dc366265d7d9cbe748c2b
BLAKE2b-256 7873a8ddae31890a3e25579efa0466921553dae37846ba873a86f3f3ecc345c0

See more details on using hashes here.

File details

Details for the file pyfstree-0.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-0.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0adfb0bb41d29ab90641855cdb2e7fc765652f01c969e7b0f5966c191e978246
MD5 52d72d29ce09a47918eda1179f9216fc
BLAKE2b-256 d9d3c3ef0bd1f53c066b67160e75c131955801f398bcb97c5d6a327d7384e555

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 11163cec28aba55c647b5c97d6a6698e47c0dad5f5b0f50b9ba67acdcfeb67ff
MD5 6124ca04220aa73cc7de294401a196d7
BLAKE2b-256 931168c4aaf25f9022caf78875a73a35d6ae2fb2003a73881083a4cb109b4f5e

See more details on using hashes here.

File details

Details for the file pyfstree-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 42e3bec996fcb3c0aaeaa227a172944768e32991a460953655ffa46a0dcbb9b4
MD5 b50a800cf3bfb88fafb673ab5daa7457
BLAKE2b-256 b993bf617da5ea6c4d068157ea717d3a656688f33ca2830452ab168608da35ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 364df7518173f9609940af91087c5b4299eb4fe1e5699929e2e24ab96f0d2963
MD5 0a914d596c6a99e484a7bbc3fc3d2a02
BLAKE2b-256 b8e23eb88711c9d622c88b15ae3f79b02fac0954629bf6e8e7b5a5e23805edc3

See more details on using hashes here.

File details

Details for the file pyfstree-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f894fda73ae90a498f52b89ddd36cb74d22f5814ddfc961bc81592f02c041381
MD5 aef70cca19f93c52caac8e5b9b1066b2
BLAKE2b-256 835ea60e742e3d2d7180a6b498cb09b2e9cd1152331036053085ab7693d16ef0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e234f00dd5547b711de523bc2d370a97482863e83cf2a036d8a25e048f202789
MD5 def4aad7617f0dc789ce8b6ac4475370
BLAKE2b-256 8d332efb1333ae9f83f349188a79b0798df8846b788b7e93cbb9aaae2572a0b5

See more details on using hashes here.

File details

Details for the file pyfstree-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b979a0dd9a38071f2b79a051613c2511d6adf0a22ef54d70d09234b229e95622
MD5 86869f84298ab37f4560f22291a36b70
BLAKE2b-256 183c6b5ac309911737513e18ea594b47e0c15f93c7f7f8ec4f48bd91548995bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a431ae873d96f9fa70a241548f4941fea8bc33dafb36a8e30030cde661fa351d
MD5 ec0d345c4a3081d474f8dfd404609ec8
BLAKE2b-256 342af497c1efd06e787f12ee26fc0414939a3314c99d7687cf7ae92edb1982a3

See more details on using hashes here.

File details

Details for the file pyfstree-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyfstree-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d65a6bb28d4c4ef4faf1c9e198583ffa7cdb708f2b5dcd615f9cfe229ad4523d
MD5 6daa70a777b25f8a3ba97cebe5aa4308
BLAKE2b-256 c603589335cbaf1534177b1dfaa81f35f2b4bb8b62da5cd3ffb6810d2721b4ae

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