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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

pyfstree-26.6.190-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.190-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.190-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.190-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 bc5c1b4778d07504fe465cfc35f762f17cc565e960d83e15d2d63a7168801b8b
MD5 ab5dbdf07c71dd105b030434864d0924
BLAKE2b-256 c1166b510c2a707e22b60deacddaa2f28341b5196e206fb2ddd2e917f33bd1ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 220c51d6873a68e05d1948bf32cb2845e025d2529a98b015d9030ec5ec7abeb9
MD5 7b5e5df6384c6f1a56a4b40e0aeba10e
BLAKE2b-256 3eb4c16de459abedcfb22fee26fbb98a4936eaa7d05576c6dbf9f8114effe9ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f4e9a6f56c234680a48afba05feb02921ba33b3a0440f83ae2d7043c68a9be81
MD5 9027f6da68aee2356abfbb084c525abc
BLAKE2b-256 9b635dbc96f0661e80f1fca3b7fd035b1fdb38e7d9e9a284e78110f128adc5d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9e84f3cbbeb5b366d783d5e97c6b7ed48f8a5c1d83f70ef44744a1e22dfeea4c
MD5 625b5421266c71ce74bca5c6657c2173
BLAKE2b-256 30c331867e6f411211b290a781b6c5cdc55f870e83be73f396ebc180faceebde

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ee85b03bfbeff744a6226dea981e4ad392f79a2bed9138b98d9dfc2d9c62926d
MD5 a51d6c40e8864d238e00cef15614dfc2
BLAKE2b-256 2b6baf542db6288c2a6c11b125ae7766a9f1300f33d9233ce4f6888d8b657fe5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0af28ec1769ddd940b42bf421790a99011c3c143fbe4a94674007cfe879fabba
MD5 4d3c11519f99eb2c0ad11a55048c5936
BLAKE2b-256 aef4f153b9eea80c94207509061886fc083935e4c0bd892a66fb58b26ee168c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 40b8392a53283d0512d7e7bc72fcba92632b6bd1f251e2ae572fe3853650acfe
MD5 b9b63e46a4705d3ebdf3180d632dad00
BLAKE2b-256 fb53f86c16e9e648659204096d421fddf54460d6871f6d02daf7795423f4bc3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3f4deaf4e6c0484b55fc2c09793280a5ab7e2173102ad7516919171bfebff5db
MD5 a5ee6683e228712e4b128a678cfe9383
BLAKE2b-256 9670812ca327b4072e6a0e2c1a859217456cad817dc2d85e069289948ded9261

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 db36e1f1cb4cabcc1be2340061893f394153f62f89b25c2e62cf7d4664932ee8
MD5 1c1196fed88de8ed3d6f6b0238176894
BLAKE2b-256 9de3ee6fa31ec45ecb5e375f5f63b36b17af33ed502898444cff3f2005787faa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ba86f9c82a91e9b2c570bf4c7195158c24d0f824bc850c9318b4665e0d976221
MD5 41e815f2ed98ebc396ddad8c45fec14b
BLAKE2b-256 dfcd41071e63c8da57d8efc6e285d018aff89aec4986ed0960a0a55d60c68f03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cb281e5337371f011b399042ccdb0c2af95d51d22b14dc94b43e222d1a54c220
MD5 ea0c619571ba4b8c225082f02940e90e
BLAKE2b-256 73bba330f0195255545bfe1c95c2c0c4d491fd2eddc9a8be11dbd82f4b4e7593

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 00414a33dabcea9679b947835b800c0862b687c46613ac9ba5c0257284074bfa
MD5 4b399f5b5b3e6396dd86aa32bac085ac
BLAKE2b-256 d4e7cb251726a77cae27ee671b3a61ec4a16c73c88bafea0131a970f4fad9bdf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6d1119202008eee9aa4e5c1fa79fb63a6b9588d5ad82628ceaff805182084739
MD5 51c5e82089ef2a214f4e72d44de0c95f
BLAKE2b-256 6db375774661374dd14f9b163ba036dcf37ca5c468203add80dc9833db3b6c16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b3bf811e6a8d275b0ff4c49f1bfd6c45db73af35d561b56a09d964a2b95f4386
MD5 9ab4f65d1f91ec49173dca81661da2e0
BLAKE2b-256 8694ecdf857f330a986c1cc5219d5de0dd1001775f9a275be7f7b6f03f7d7157

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 210767ed10ebbd39bdb31e0d11c7403a674aec19e297a978d2305d395a7a506b
MD5 dfdb46a51b07058713462a1bf862e303
BLAKE2b-256 59e9f4b533376873db706456cd286b99031901179db445d019d86e2525f4d770

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d3b89716b6073423181036360d4f07c571209eb44724888d0f9ede541c00179
MD5 82a592c38209f2cabdb4ab6a1b5e6e99
BLAKE2b-256 c5de446461d9aa823a4c43c1347f8c55ede87f766b6cdc29a0e580896aa551b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0a90fde84c254d0088fdcb30bcb8aefe6c684574fb6aaae31b638d5bb51f70ff
MD5 0e4967ceefca78c66067287e1fbbc4b5
BLAKE2b-256 98bc9ffc345b0fce228de740b9f8364f7aa8bb61edcf228dc5e68b2ec15995ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e0b7e38a8a0cc288d5a074561dbd5e0ab67831dfdbd4d2e71eb8a629d942e205
MD5 da9731a860ab3e75f9ff76cdf031dfd2
BLAKE2b-256 a75f8edc6f41dca93c6a49941f653e2d502fe453279f2a59239e151cbee036dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2d224f7b82bff863d6f9a87003dbf263c576440409cbab8840ee9cfc78219278
MD5 995ed950b576e4bedbade01e28e1b06f
BLAKE2b-256 72eaabcdc309b49c8fb6ecd36b4ece9c328a36324ee2920e2a1a90b3838bbbf9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.6.190-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 426a235ae5670da7ee6712fd2ed9972ae020eabdec3f6f287b0872eac81de026
MD5 a9b7795d632056bee5200912111134e4
BLAKE2b-256 28b0a659c0e86d0d45b0d821e0fd2bb1154a17cd916dedb588ea9620e756beec

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