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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

pyfstree-26.5.177-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.177-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.177-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.177-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 bad1259aab93529f3d5a40553331c0962880ced314f1443e17577f269d3413e6
MD5 c5ee0a0b7f6f498053383a0b6a5da653
BLAKE2b-256 ba98f9bd2d0d526dd7a443536fb9cc10cea88dacba3a73aacc6fada881ad991a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7389abe4c64a2410d79f7c3fdef00583e3eedead2f4ac4fb3548093728e8bf76
MD5 20ae08be5aebfa82f039eac4dc659b45
BLAKE2b-256 66a91439c9ec28c4770dc9a60a387132e204f697cbad1777260fff5b81c592a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 155b8379df5503e64dcf6d70c6d937b0c9c361a1b64f0de626c509601c219166
MD5 9684f585180c525bd2308075c5754033
BLAKE2b-256 d61b8f46ae4dace36113c88701fc5184ca25e7a6d86dab12be59e485eb12d0c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 223f92d88c22c6bd8935fbcff14fd7c2fb1b26fb07983cffea21c283a5d12cc3
MD5 287329a157c2cb95dfb94e8f055d955d
BLAKE2b-256 9663d611ae2611c9140857093230829ee78d2a63653d82c4ae30b6a19293a558

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bedb988adff6c97ff08cbbdb01a3f34f15de74d39ba1dce2ee856d9e8b92dd14
MD5 f37cddb8fba0daf3696ee32bb0836088
BLAKE2b-256 f19508d63284b7a0ab47d795c8de7cbff367a769d2fdcefcd2eb9f070dfdbb39

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 41a6383ec2f622e754522be48e2329de85e08f935d70959014c8c570f82099af
MD5 88c90e5ad62d7187132239c63663a851
BLAKE2b-256 e6605145bbb382e0534ad3864602170760cea1c9eb4b0d6458390c446453ef61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 336560600e832c062cff58841d9284836e32104610694ebe64b112f65762dc3e
MD5 3714d603964c231aae4b95fe05cf1290
BLAKE2b-256 a6a6a931764c226806cf33de214e713bb2aed2d340cde8af65597cc2af43607f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 425a5bdfb783bf2b64dfddf7b3a425844ea35f1d6a6de0a0d8411478b76a4641
MD5 46a78b90768cb63f051fdc0305a913d1
BLAKE2b-256 463f5cecf01407dec47c6fbbac9b63307cbbb97a3e71144a1b464df59f78dce3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b2d162edff743e518fee265055be4d184da25154564a51cd3ef12f186d3250a2
MD5 179aa255d5bf2377d7efefb666813178
BLAKE2b-256 08b6322a10a2612f4d41e6f30d230a539753983b5c3f14343193659900fb8d5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f0f513af44431fdf4646571fc0f2ab29ab626eca7d94557473d22537677ba2a2
MD5 ae703b353db981fddb5edf7fcd933462
BLAKE2b-256 ac9f67ad28db517b5307b53fc94ba5e1156f429b04a8b7a55aadc7d1d9a2e5e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c62ff6da2d7bcb9f11dbf4bdb6474a6da51004ff3514ed1fb756196fe2f312bc
MD5 2c3700d210ad0ae9beb8a8a8f6641c32
BLAKE2b-256 34f97570b7d4d90cd073e16450c7769dd32e08e3f70e476f99d63fcdc9fe850a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5b7febb008da692cfbad6846764bdab2a930daecfaaac32dd35b1207f5dec7fb
MD5 12a3302b7c079c35af85995bef21ee2c
BLAKE2b-256 b046824b74b0057d39db50a3c66743808c896542710d4059b00eb46d17b1497c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 02e5bf4c65f62c9909232f85900e233c1f01f253f72c84d75e6473bace157c4a
MD5 1837ac4b342b99f23ac0d178170bbbc0
BLAKE2b-256 60eecf9ac567f42fdf100800fa71a688db082a2b506cf8803d57145f03f87a22

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 24924b8e2be6df124e9bc5ad87e1449ccaf4a43439ae835cbc0cd84d3e74a765
MD5 b1696ec1c8706b5398ed39c760ea87ec
BLAKE2b-256 31135f8495c14945faed0a1811aab6b071dcdba3bf445ac27f3f15eec09f6267

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9aeef45bf58e9a8ed54dbea174bc52acad3263e961eb616106e14be9f3e024a6
MD5 a45fa904de65662721a85f3c765c45c8
BLAKE2b-256 973b05fc281a38135cd1ddd75572f85ba23c10535f73566dbe0e1cb4670bb7ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1b9bfcfbbff24bbf4e11791b7bd7caa6f9367238b07227e77a383325a6dd2781
MD5 4371fc425e28805eaf4bcccc46c1c582
BLAKE2b-256 e58a5e05e7d163b2de3a0fc2d758312c32807477ca7a74138e01ef8eed4e9bbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6ddcf1f71dbe0c6d90952f4e9e8a84ab18b1171498c614096297a136d049a71e
MD5 1fb06db28d06b891cab085b18ebac43a
BLAKE2b-256 de78525cc41d59e718cc0ab46fda952cf4f5818e882df23230d9218ae0456664

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dace8c983b086eecbe02204ccd8827a4630e2e48e63128bef0196bf2161ed5e5
MD5 ad6c388f9bcd8a8095df6aa99323f0b7
BLAKE2b-256 ff9d98ebcbd89022adfba5c3664db5e66b1d52a56357136353fb0a43041d7acd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e723ec35a881cf052206bc8104f736b606f9e89e078d974f9a9d44df04f9a350
MD5 57dda3c0cd8193aa224390a18f3ceeba
BLAKE2b-256 6b447f92b0f3bfbf5aaead2a5805afc7f5e8c5d832b0dfcd9a4f47398a57ad67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.5.177-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 93c47d9e283c820585ad5f391814b34e79d7495dba37d4f8f8f8ef8bad093758
MD5 99f7e7c510114e740426de7bbf8543ef
BLAKE2b-256 99e3777e075114ee754ff5656f5be433b405a7b2460af2c538c3611d40d8b1c4

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