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 Parents: 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.
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
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
runtests_config.sh 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
runtests.sh. 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.
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.
Enable thread sanitizer for clang/llvm only. May require additional flags on some clang versions see LLVM wiki page.
Enable gprof profiling information
Enable Google Heap Profiler (library required).
Enable Google CPU Profiler (library required).