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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

pyfstree-26.5.171-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.171-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.171-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.171-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f602cba4f3c78d43676bfdae186dad6cdc17a522fea82f88b8cb89127b0b531b
MD5 f4b4f24a90b7bb97b025a8d08779c341
BLAKE2b-256 1ac6ac547d9c4b2ec789dcac5d74b2f0c94c1f3888cac7212554765a7d2136e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7a2a411fbc1cd5e7d194a42e4eff815cdbdb8d42e6cdc368cdb867d51f4f0d79
MD5 43635d8e1872e9fd8d11b0f05f1c688d
BLAKE2b-256 fdefc6cdeb07942409be51c75f375e87751a0cf0f30f6350acb9d2122860335c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a307352d84744ba7e75f90f9c0769b35dfecf5196873ede87b520a3f49b38832
MD5 e398e26f8b1180c32e2cf1357aae51b9
BLAKE2b-256 8da9696f080c1e843ae77970e2eadc9075ca1dce1560b046770e0f4ac4ed1388

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e66e0fc8980e5d02abe26ebc90ebc8c9490fde74346e6055b916d95b6085c356
MD5 8b13a6451183804fa2cf441a623707ca
BLAKE2b-256 0d72a7f6ab328e8d9af560c1845daeb863c047846aef89d5e1319033f953314e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1d89d8f2461d6ceb06d960878142852a9ba88448b722c1178f7ed44c4ca8ef40
MD5 abe9baf711267ffb08bdb3122806b971
BLAKE2b-256 05696f692206446ec9910d191c1a7ad4c48d7038585baf73b094a5e6049b55d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 189084b66baac26914c30afe8c2811a2e222796273d11a724f9d0a78072bfa12
MD5 348c5f2341e8e52d5cbc10106b101ebe
BLAKE2b-256 e67f6be5bd0f8d2352ec11f2f3fb18e06b36d285dc1f20e1455bcde0c1bb7984

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8e15e7ac0a7090e4f987fb6c124ce06ee55fc8fa70fb2bbf129f7cab9e0dea5c
MD5 a930c4835c7c1a59504aeaa5b678e57c
BLAKE2b-256 2ab5028855ac682785caebc72ceb32b07d3f4c37a0c843d96e26f597f7b12dd1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 72d0ed090f08a60ea3fd40586c1727eb5038d5c4c31e9b221fa0aab234e58210
MD5 3cb83645f800ad3b49c2848bc584af4e
BLAKE2b-256 743116a35ee28a6c8d5a1267437c046c3ea65f3e7a3c90d645b6cba550749c9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 73b7dc6d79116f80118480d9252990fca58ae77405048f7e0c203e192492e868
MD5 2434241a6f0593f30da5bef3d5288593
BLAKE2b-256 e9dbb915c477e40943a9cf75d352a04a661849c1fe0db092f8cff04ec18054a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 008209c59a79297be3256ed661005fad0a3c8931dd1eadd70cec28ae723daa96
MD5 f4516f43de48f857f91185a9237cc764
BLAKE2b-256 e1eb1b54b7fde3a51a6b4518d6a4f9d4e1be3ccb886dd0864df5528f4322279d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4ce9efefd3ac7218dfbee6d902fedaf251b6a7102affbbea0b4580ec9a0d4c18
MD5 68a96c7572f283407e90ee2c50c98182
BLAKE2b-256 31bc58533c859550b1976ba669ad62c07cd7945314415ee21638761ab471afe2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 394e1ed54a03cc9816e40377e4899d76f06e91de30b94587e3805742d1cbfb8f
MD5 4b5e2240e735cbaf1957e8f4779c17c2
BLAKE2b-256 2c4b9fe9d732ab9d6a6bb776807b3c6ef98ac57b8fa2dcefc68fa96f447cb8e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 db19afc7134ba94d03ee0e5050f8063793558dff957f0d7e082e2e28c0c8b532
MD5 75a3a8c1cde460d6567ca660f01273e5
BLAKE2b-256 aac4f2e46f2237366a37532ec37f2f2c3b7fcd8602ad86d6ec54bbb792b576c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a6d770746247ebf7db52244e5fd1c6739784005a4cbf89eea3aafb4acde01a03
MD5 f2ecdb4f75787be9a6bfc653acc07448
BLAKE2b-256 b67fc50b17f0bb7296c7ca8cc75552aae39b3a1be9848e19ef05a479880d18d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 72ad49981bcbf7f02d58c79f7401cd54368b1c2551b265659b8e31935f968977
MD5 9d6ed4e2f4c562991a336adc1552b93c
BLAKE2b-256 455ee166115b599a50093eb5324b3d01debb8f48df9c9f9c3ed95d2eabf5b53f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 97ef00f189380a6b802a56e5dd97acae9da4f71ec1125932e54d1a4c464f3108
MD5 c03c9bffa841bf0c963265c9b234088d
BLAKE2b-256 9f8ebd6d9d22877b2fac6498104c7ba80eaab6166d8c6c0b450ee81319ef539c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4a16073a2a048c96c595f5e88f1b6b87aa6acc985a427fcde8ea712690c167fd
MD5 1136e6366763c163cc7ee756217c494c
BLAKE2b-256 e161c6387865e8a142f5b4f8cb1782bdea2872665c5649242c06d198fee88998

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a4a8f4c635b53a108368219c8e3f2b5e8f187a2e1b0158524170db735e810d55
MD5 da6f273f41764eabc60c4fdd8c5bbaa7
BLAKE2b-256 b4aeb1e31065afe0f2a2d9521332c967bc28a99052cf6e53d85904a504e3ffd2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9b9419364e591c44e6c99bf65956bca4d06eb27c32a117910a9bf448b20fb67f
MD5 3ef38cc50e714f871dd266f8afbdb79e
BLAKE2b-256 d6b8c8bbc178a422d0be46b0d5471d354affbb848a9c45602df278d86cbbc592

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.171-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1fdc1ad81d09a0ad0a7b1f1ce67e21b1847378b3d9c286ba2a5a3ddcbf1d92d9
MD5 f343c722eeebea335acf072296f51392
BLAKE2b-256 43bd58a0134cd827adcdb07e74b36282789db12f0c8b59a6304cdfeb23776d11

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