Skip to main content
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

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

Uploaded CPython 3.14Windows x86-64

pyfstree-26.9.193-cp314-cp314-musllinux_1_2_x86_64.whl (12.9 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pyfstree-26.9.193-cp314-cp314-manylinux_2_28_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

pyfstree-26.9.193-cp314-cp314-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

pyfstree-26.9.193-cp313-cp313-musllinux_1_2_x86_64.whl (12.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pyfstree-26.9.193-cp313-cp313-manylinux_2_28_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

pyfstree-26.9.193-cp313-cp313-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

pyfstree-26.9.193-cp312-cp312-musllinux_1_2_x86_64.whl (12.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pyfstree-26.9.193-cp312-cp312-manylinux_2_28_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

pyfstree-26.9.193-cp312-cp312-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

pyfstree-26.9.193-cp311-cp311-musllinux_1_2_x86_64.whl (12.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pyfstree-26.9.193-cp311-cp311-manylinux_2_28_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

pyfstree-26.9.193-cp311-cp311-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

pyfstree-26.9.193-cp310-cp310-musllinux_1_2_x86_64.whl (12.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pyfstree-26.9.193-cp310-cp310-manylinux_2_28_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

pyfstree-26.9.193-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.9.193-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 747592a494dc0162a95ba60ea21bc79be166a316f218d28d9178137b88d95821
MD5 52269d100f47a6c0baeee8b6bd239b44
BLAKE2b-256 ae44d0d03065c5484f4a55477fa459aa1ae77793f1b73333293b6e823ea6613d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5b458bbe0df73a628f771cd3b8f1444cda032dfd74f5c322d65f4df7a21005f0
MD5 244307cd8d8a401860243edcbc6e2af5
BLAKE2b-256 978abc09b693ae0bb3f8f9ec52d7137d984240e277e6cdcf493079e99bbe035f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 13b7c285136c2df9b73a2fe85291a0dfc71e72bfd2c682ba52620b75d85ac2e3
MD5 8edc4089e80c69e5f08a3aa268a226c4
BLAKE2b-256 f1e941fc6656d0d27c6ca5c8d002b243c84cff1337b0cca9e6d3f23766678f69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9bdfae0cec5bf4badc42cca8d53b7c2dbb7bfd2028e6fd46017db39feb5ad286
MD5 c9324438228b96260a3d97ae0c1a6595
BLAKE2b-256 7e3da6f94882761c41e5f32fde86a66efd4d786970b25f57555a6b5a76400993

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0115827fe9194cb1ab5275ba38a00e3f2ccc82d56b38e0c7ca07eecc0d434e7a
MD5 7324ff77083988445c6c58ec67f8e88a
BLAKE2b-256 fe037a6aa849a798887c4b7c32d2eccbcbc64bc914b8a22eec95e109c11040ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3d8b593bb16358c9f54b8fbbf31076dfb1afd8af97fb849fe1a931341525c5fb
MD5 680e09247b64aa9faa41c6423f71de8d
BLAKE2b-256 8a16b24bf3f636560fa125371935204891f6e3e0742282ffb2b0a2b363b4615b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 23854899a87334fc015515385d7e4d973e1bf0c0b92dea142f1263e565936b70
MD5 95b262e358c6ce2416913e27be752dde
BLAKE2b-256 047a66dbd3fc969cab2dd896d9127a41ed84aa2931d6f80618cdb7e04f384e35

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4bf80a883e5f3d9563cf98694b5a9a7594c3165e01b6bd83fcfe19a3e4b480b3
MD5 475665d1b92ba1c17d904cdb77c14b79
BLAKE2b-256 f72116dde656a97dfac277633e874559979c5f319699f3c0e373c86b539888cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c73214f7803f468e0ec38f3e6f95454183fec49179a2f5e9e0c1b3267c2a9533
MD5 c3039f71696e460d8214332d61e53e64
BLAKE2b-256 3d0dc88be5ae206386da5a234d2c996c2619c9aa275ac07e6370ce7f45ceae6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a47f859c5a1f6c6c35caed56b41498c457f9f25c05a0b5092c0b7b86c7093a1b
MD5 267d9f2c0f4d6e60009488ff8cfb5d31
BLAKE2b-256 a31d4068bc0d03f5095cd31944ca4c38dc82f3463f4974902e28766262eb38a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8ec9dc7eb2d0fdc0423fc5c9f363c7d77f0a6e2d6496796328ad00d39f0b509f
MD5 6aad01b2d550471598162ba4779411f3
BLAKE2b-256 47834f7f8e054ae571cf2d5cf8eb46759c28f29c54ef35388c1eb06b4accc77a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 88dd8e38823bb0c74829e5e011c66c0942f3ffd9544f2f587f62544435aba2b8
MD5 a3c0754792f9b835c34d49979ecfc5e7
BLAKE2b-256 7072e5d525d3577893aacc89b551d328fa5e90f9b42f78d5b544c322b17e6f55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0338340159354e5a58e2aef8787f1703e95a5ba90f114b3c63376c0c12d5a8a9
MD5 5193c40f8068dabe505c2e2223b4f12c
BLAKE2b-256 9f30d71788c4ff28fef73e1a5750895353199f2fcf3ef2778a41fceac17472a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d9f8cdd01faf064978e9267f198c774bd6039475c0ac45ad2887d77f72a8d54a
MD5 264ba8bcb08fe29144fc1ce9cc704ef8
BLAKE2b-256 05a781454d212f31977d6392511ae1b9bd52380e12522f55af0f57925d5e779a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 10911773629099aca5c2dd3d19bc59a1ca9a21d4057c1c5b6bcc5e32c3c96c2a
MD5 0ad0fad0b7c12985a879eabd2fbf2053
BLAKE2b-256 44aad7649a6c623b35fa3e2dc49af977422b35d0ea7b1788b7cf01216da75cfa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf3c2cc41ec03dc1068d5129a85c0ef3735f782731364e956e62766fe8d9c769
MD5 c480e2ec7054e72283e48e6b65b5c216
BLAKE2b-256 452335ba26890b7ee1ca29c303c9aef25b5463afd0a742645268b1b61dc52831

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c47db437f449875e1816cc9b4e9228b327f9b419d3a0be42e76b4992ab7c9a1d
MD5 52f47c5bc8ef6a5b55b695077a3c4fad
BLAKE2b-256 bdac178ea7f5b3db7b29024fbd951b2c336a645ef4cc1c9716ec701e98f8869a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a6326aa5d8f1c3a8c5b9bc6bc922f103450185ee3dc230dd1233c9f77d4293fa
MD5 2e2b9ee090e576709e8571a9c4d439d1
BLAKE2b-256 7e052c52fef748d74714103b20011597e83959cf8e7c3905b98e6e538ed1df7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0b8f60b5d58d25a9be363f30ec8ab87e8b5b7274ebe3f002f0f0f9bab855dcfb
MD5 763ece203426ba11e2ab60ab5b7a3385
BLAKE2b-256 ebf4c516c864ad8a346800aed0a37089914c58194c9d76588bca388e09009c08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.193-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7edb5434394ceea09e02ac96b9f1762f0acefebeb56881e630ace13db635b7d9
MD5 e2cbb75183e253b4378cdc2921931b16
BLAKE2b-256 8cb12617d5735ecbea329392ddbae027cc4a1a08698f2f2acc2cc74545e39a13

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

26.9.193 This release

20 files

26.9.192

20 files

26.6.191

20 files

26.6.190

20 files

26.6.188

20 files

26.5.187

20 files

26.5.177

20 files

26.5.171

20 files

26.4.168

20 files

26.4.166

20 files

0.1.0

11 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page