https://github.com/m4tx/offs
Distributed file system with offline work support
https://github.com/m4tx/offs
filesystem fuse linux
Last synced: about 1 month ago
JSON representation
Distributed file system with offline work support
- Host: GitHub
- URL: https://github.com/m4tx/offs
- Owner: m4tx
- License: mit
- Created: 2019-06-07T23:43:53.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2021-09-09T15:54:14.000Z (almost 5 years ago)
- Last Synced: 2025-02-26T07:34:16.513Z (over 1 year ago)
- Topics: filesystem, fuse, linux
- Language: Rust
- Size: 224 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# offs [](https://travis-ci.com/m4tx/offs)
*offs* (OFfline FileSystem) is a distributed file system with offline work support.
## Features
* **Distributed**: allows any number of clients to be simultaneously connected
to the same server.
* **File system**: the data is visible as a filesystem, allowing easy access via
existing system tools.
* **Cached**: the files that were opened at least once can be accessed again
without internet connection, be worked on, and the changes are synchronized
once the network access is regained.
* **Content-addressable**: repeating file chunks are compressed away, so there
is no need to re-download the same big file.
## Dependencies
* D-Bus
* FUSE 2.x
* SQLite
## Build dependencies
* [Cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html)
(Rust stable, beta, or nightly)
* D-Bus development libraries
* SQLite development libraries
* [capnp tool](https://capnproto.org/capnp-tool.html)
## Building
After installing Cargo, execute:
```bash
cargo build --release
```
The binaries can be found inside `target/release` directory.
## Usage
### Server
```bash
offs-server [-s store.db] [LISTEN ADDRESS]
```
`-s` option may be included to specify the file store database path. The port
that the server is listening at may be specified as the `ADDRESS` parameter
(default: `0.0.0.0:10031`)
### Client
```bash
offs-client [-c cache.db]
```
The client requires the server address and a path to mount the filesystem in.
### Clientctl
```bash
offs-clientctl [-m mountpoint] offline-mode
```
The client can be controlled during operation via `clientctl`. Use the
`-m` option to specify the client to control in case you have multiple instances
running at once.