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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

pyfstree-26.9.192-cp313-cp313-musllinux_1_2_x86_64.whl (12.8 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

pyfstree-26.9.192-cp312-cp312-musllinux_1_2_x86_64.whl (12.8 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

pyfstree-26.9.192-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.192-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.192-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.192-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b4bc1db42ffe042f5e4ba3a86e8d3c4d6ad29120c7bdad6051af8d13f9d4c49e
MD5 252339bf470dee1cd7026d19636deb87
BLAKE2b-256 69120fb2808facc667fbe93a910f961aa69d60c93aa77c40a946a2df5f54e108

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 981522c0f6a246f7ec192e352127a3f9dce77af4d839a3ad23fd71692b8dd007
MD5 386ae7303381c58c6214e02ee7a417ba
BLAKE2b-256 ff075b54deed0e8c52ab0f71d47a7016beb7430e32136fba379898c6fa3ee36c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4e43c73442a1c330ecc84f7ef1d6e52d5c3ddbee01223fa460160d816a228a33
MD5 c7ac2d748d98f87c417e931e70ec4a34
BLAKE2b-256 fd24e7f69dc7955698b663e53b9283aefd10d372e646cb3f274f3d6d98ee25da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af2a590f8295981bb993dd454561cbfc01199e64bb689e86c426c0162c0e2989
MD5 1a472e20699007f7d321d1de3d69c5d6
BLAKE2b-256 01ddffae1b467dc3256915d15a037d30f05b92ba1cff2c43b08bcd0639a139fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 18c35f2d96589fe3ffaa3af234b5ff19d894dbaa148df549d9164b6b73df58d5
MD5 f00e29360d87bfe72887306f1d8f43ae
BLAKE2b-256 7ea56128dc612c36b5079dc488f4adf04a8bcc938dafc0d4cac7d665b464e365

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 64ff26c60e091bf54096a3397b2a017671d8cad1b58afdb91bee59ac6b91f75c
MD5 b0612babe8b19ec2124237cd4ce80215
BLAKE2b-256 233b1fe46ea6c25a99a22ce0b8a470b39110147b67e9f34e2b8c5367e6e8dd18

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4a4506952108c30eb3a7db092e53d52aab59260e5652452b2f8f3067bc68cab1
MD5 945ed4521305a26f8cd7a1e21a86c762
BLAKE2b-256 79905b1b76eddb6e9d41381a314caa04f11d7bd12448f96e3e5e60249d6486c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f0c8a2298a7b32a8078415d0af48229251e1d277bcf3586d06b6463098172048
MD5 fc592f0b603526c5dce4454684f56779
BLAKE2b-256 d332c9cb1878625bc6e50a4982e7e20d3026e3c4a9e1379a9796c1a95664d38e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c1fe12e86f11a838ffdaf42298a5f11a9a2f7108fa011a484d3320a9d13cf564
MD5 f162d3734cf54c98b8933dcc0413f377
BLAKE2b-256 6f393cf83c5f800daf2f8a7d511317381039e31a2444272eff3bab7958380870

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ac0954fa55819f8a317357fe0208ad03cf4c802cd1dab71bacceda437004dd71
MD5 8f28a9f2e4ecf431d95ac95d8e528b35
BLAKE2b-256 09b4a578d6a5ddf03ceef9e0043f01263cc1f28943922d0bc25c997ade453b43

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fb67a1e7bac2672f5f61e41ea06821474e05eceb73bb182ded9f7de04055f94a
MD5 262ecb4aeec2c3480e520f102ba2cc33
BLAKE2b-256 432aca79239d8241ec723d232191b016067ea43876c0acb33abe5fce17ada3d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af1c0499aa55c7b7eb05ba7c287f21a93c5cac56b5e09bcd416ee04c695b4ac2
MD5 4a237477af2408b934885c96d4b238ac
BLAKE2b-256 71c1488a5faf2832f195962537ed9a03f855908fa451f979f804e163de5bcb87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fcaa5fca891d123f7d9ab652300100ec86e839844614c7bd6fe8296cfcf2f67c
MD5 ecc06441c6de704eb42737fc3f2ef9bc
BLAKE2b-256 6af04f40f02ab50eee99a5be20fd4c6b16717b4bf0abafeb3bcb99ef6461f965

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 50167db2f35d4561125061709be7b276cb5e1788f6c2f3400fa56b8f5341e32c
MD5 ef3d04ccdc68604bdbbcac6450638c8f
BLAKE2b-256 0b9c125d21d5ea7437c202cae2d2100bb1e17da9073d08e1ae20045305f0b862

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 027a7a8b9cf20ee62c4384f226f7eec71a1e6e32813ad891992565fb1181f207
MD5 46ac7cd79c4bf838c6d8f06230bcc187
BLAKE2b-256 167dc2b629fbfffd8a1babdca0ced4bb44a62ec8b255c9c5a5bc4b670043fa53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc515af8b146f041e4447dcd521e74beef0140903330deb1f5c3b6619eb450b0
MD5 722c995fd72496d11cf366ed1726dfe3
BLAKE2b-256 68e0e0974bf450c65f4602d6337c9a333e3a9f73acc9cefa58d1ce457b33a26e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 71f7548a85285a19715eb5830f53c52a8ca76041b2cbf073d0c97866337704c3
MD5 30854ec05e5e861e487e457bb66ea017
BLAKE2b-256 2fa3b5b185f59c0233d9a517ad201ce6f84c4f768c2c82937b8b57d6006c0674

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 add6d96d289af9f29a6965b378f0afd1192ba67da25d801c4646eb5dea4f8e72
MD5 3de42b990d5cf0300a7607e4eb8abff9
BLAKE2b-256 567ae1aa9f41a7e6d4e4d578e8a22836a530dd1b8bea32802e0c34160d3955e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9ecf54ee157b6f44452c34d8e8b5a4d214b737df39b2e8b2a9622ce8d6ccb73b
MD5 62ca3aab00f1c84ce2027aaba9fba12b
BLAKE2b-256 7813ba60447f471bd03984d5edffd55cc4a7f599a70663896f3e26d1d76e8674

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyfstree-26.9.192-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 77318d69e971a1bfa589c0aabf424405061d4118d7e40fdaedafb600b4915fac
MD5 672a9d53cdb891b1d7aa8c121f0c3ff3
BLAKE2b-256 6a7ee0f10db99d44327bb2bbb2aa268d5fca3ad32cd3b2da2b603abd02b0bec5

See more details on using hashes here.

Release history Release notifications | RSS feed

26.9.193

20 files

This release

26.9.192 This release

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