Clone wiki

ori / Home

Ori File System

The Ori File System is a distributed file system meant to manage personal data akin to services like Dropbox and OneDrive. Unlike these services there is no centralized store and users can manually or automatically manage synchronization.

With Ori you can quickly create and replicate file systems. Snapshots and history can be manually managed in a way similar to Git and you can merge file systems as well.

# Create a new file system called MyDocuments 
$ ori newfs MyDocuments

# Mount the file system using FUSE
$ orifs MyDocuments Documents

# Snapshot file system
$ cd Documents
$ ori snapshot

# View the history
$ ori log
Commit:    81b68b885d1a130c75b8a59849858cb523398f50d94df1f4e914d6b9912fe713
Tree:      d25213736f43067fc7c87114208ce44beec6a5cf1f818b4a1ad6b2ec34a62535
Author:    Ali Mashtizadeh
Date:      Sun Jan 27 19:56:12 2019

No message.

# Clone a remote file system
$ ori replicate user@remotehost:WorkDocuments

Automatic replication and garbage collection of old history is provided by orisync. Work on this tool is ongoing and improvements are planned for our next release.

For details on the internal design please see our SOSP paper on our website. Visit website for more details.

Build Status

Ori is regularly used on recent releases of Mac OS X, FreeBSD, and Linux. Please feel free to submit bug reports or patches if you have any problems on your platform.

TODO: Switch to bitbucket pipelines

Running Testbench

To run the test suite you will need to configure an SSH public key to access your local machine without a password. You may need to configure the correct umount command in if we do not detect the OS correctly.

# Required for Mac OS X and FreeBSD only (comment out on Linux machines)
export UMOUNT="umount"

You can also disable any test case in the same configuration file.


Once configured you can run On an error you may have to cleanup the tempdir and test repositories on your system before rerunning. The logs will be available inside the tempdir if an error occurred.

Build Flags

These flags are useful for development, testing, and debugging.

Enable address sanitizer for clang/llvm only. May require additional flags on some clang versions see LLVM wiki page.

scons WITH_ASAN=1

Enable thread sanitizer for clang/llvm only. May require additional flags on some clang versions see LLVM wiki page.

scons WITH_TSAN=1

Enable gprof profiling information

scons WITH_GPROF=1

Enable Google Heap Profiler (library required).


Enable Google CPU Profiler (library required).