Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

The Caml Hump: System :: File systems and system administration

Bantam [09-May-2005, version 0.1, Alpha]
Bantam is a new lightweight file manager for POSIX systems ("Unix-like" systems, including Linux) with X11. It is not for everyone, but is intended to be highly productive for people who know their way around the file system and are comfortable with keyboard commands.
Author: Matt Gushee.
Native OCaml libraries
BDBFS [18-Dec-2002, version 0.3, Beta]
BDBFS is a portable, user-level NFS fileserver implemented in OCaml. BDBFS stands for Berkeley DataBase File System: it stores files, metadata (directories, inodes, the superblock) as key:value pairs using the Berkeley Database (Berkeley DB) library.
Author: Lex Stein.
Bindings with C libraries
Cash [28-Aug-2002, version 0.20, Beta] Has a documentation
Cash is a Unix shell that is embedded within Objective Caml. It's a Caml implementation of (an as large as possible subset of) the API of Scsh, the Scheme Shell by Olin Shivers. The Scsh API is designed for writing useful standalone Unix programs and shell scripts (but rather not for interactive command use). It spans a wide range of application, from “script” applications usually handled with perl or sh, to more standard systems applications usually written in C.
Author: Bruno Verlyck.
cfind [19-Apr-2005, version 0.0.0, Development code]
cfind (Content FINDer) is a UNIX tool that provides functionality similar to that of Google Desktop from the command line.
Author: Radu Grigore.
CoWNFS [14-Mar-2005, Beta] Has a documentation
A copy-on-write NFS daemon for use with the XenoServers project. It's a general purpose userspace NFS daemon with the ability to dynamically stack file hierarchies over each other. Different layers can be configured as writable or as read-only, and in the latter case changes are made to a writable overlay in a copy-on-write fashion.
Author: Russ Ross.
Native OCaml libraries
Ethread [03-Feb-2004, version 1.0.1, Stable] Has a documentation
The ethread library has modules for read/write locks, barriers, and a simple thread-safe message queue that interacts with so a thread can wait for I/O or a message at the same time.
Author: Shawn Wagner.
Native OCaml libraries
FileUtils [18-Jun-2012, version 0.4.4, Beta]
A collection of utils to manipulate files following some UNIX convention.
Author: Sylvain Le Gall.
google-drive-ocamlfuse [16-Aug-2012, version 0.1pre3, Alpha] Has a documentation
google-drive-ocamlfuse is a FUSE-based file system backed by Google Drive, written in OCaml.
Bindings with C libraries
Inotify bindings [22-Nov-2006, version 0.2, Beta]
A small bindings for inotify, aka linux file system notification new subsystem.
Author: Vincent Hanquez.
Bindings with C libraries
libguestfs [14-Apr-2009, version 0.9, Beta]
libguestfs is a library for accessing and modifying guest disk images. Amongst the things this is good for: making batch configuration changes to guests, getting disk used/free statistics (see also: virt-df), migrating between virtualization systems (see also: virt-p2v), performing partial backups, performing partial guest clones, cloning guests and changing registry/UUID/hostname info, and much else besides. libguestfs uses Linux kernel and qemu code, and can access any type of guest filesystem that Linux and qemu can, including but not limited to: ext2/3/4, btrfs, FAT and NTFS, LVM, many different disk partition schemes, qcow, qcow2, vmdk. libguestfs provides ways to enumerate guest storage (eg. partitions, LVs, what filesystem is in each LV, etc.). It can also run commands in the context of the guest. Also you can mount guest filesystems on the host (requires root privs and NFS). libguestfs is a library that can be linked with C and C++ management programs (or management programs written in OCaml, Perl or Python). You can also use it from shell scripts or the command line.
Scientific software
Logic File System [09-Jul-2008, version 0.5, Beta] Has a documentationHas a tutorial
LFS is a very expressive file system coded in OCaml. LFS enables the user to access his files through an additionnal mountpoint, /lfs, where powerful logic queries can be issued and navigation can be done through different dimensions, like date, size, or extension.
Author: Yoann Padioleau.
LSD mount utilities [26-Feb-2007, version 1.3, Stable]
The LSD mount utilities allow to automate mounting of encrypted filesystems in linux with cryptsetup and loopback devices and enable users (not only root) to mount encrypted filesystems when appropriate entries to /etc/fstab have been added by root.
Bindings with C libraries
Mlfuse [23-Jul-2002, Beta]
An OCaml binding for the Fuse (File System in User Space) library.
Author: Nadji Gauthier.
Toys - Examples
mltree [13-Nov-2008, Alpha]
mltree is similar to the unix command line utility 'tree', but with some differences.
Author: Florent Monnier.
namealign [16-Aug-2007, version 0.6, Beta] Has a documentation
The program namealign renames files in a way that they are equally formatted. It follows the same idea of character-classification as the tool pftdbns, but does not sort files into directories. Instead it renames files of the same filename-macrostructure to be equally formatted (e.g. inserting a leading 0 in a numbered part of the name).
Author: Oliver Bandel.
Newfaction [22-Jun-2007, version 1.0, Stable] Has a documentation
The program newfileaction (newfaction) invokes a program for each file that newly is created in a directory you want to visit. It's similar like the "watch" program. When the watch-program is invoked, it starts a command on the shell every n seconds and shows you the results on the screen. This is good for watching the result of commands every n seconds. newfaction is slightly different: it invokes the command for each new file in a directory. So for example, if you get all the time new files into your directory (e.g. by copying them from a remote-host to your locval host via ftp or scp) then you can invoke a program for each of these files. For example you could start your vi-editor for each new file, if you know there are coming text-files, or you could invoke xv for each file, if you know there are coming pictures into the incoming-directory.
Author: Oliver Bandel.
Native OCaml libraries
OCaml-dtools [28-Nov-2006, version 0.1.2, Beta]
An OCaml small library for daemons (init, logging, configuration).
Bindings with C libraries
ocaml-glob [27-Oct-2008, version 0.1.0, Beta]
This is a trivial wrapper around libc's glob(3) function for OCaml. The Glob module interface contains a single function, glob. This function takes a string argument possibly containing shell wildcards, and returns an array containing the names of the file system entries matching it.
Author: Andre Nathan.
Bindings with C libraries
OCamlfuse [26-Sep-2005, Beta]
Multithreaded binding to the fuse api.
Author: Vincenzo Ciancia.
Bindings with C libraries
OCamlPAM [25-Feb-2008, version 1.0, Stable]
OCamlPAM is a wrapper for the Pluggable Authentication Modules (PAM) library. PAM provides a flexible mechanism for authenticating users via administrator-defined policies.
Development tools
ocsigen-bundler [09-Mar-2011, version 0.1.0, Beta]
This project helps to create self contained Ocsigen web server with its Eliom modules. It is a mean to easily deploy an Ocsigen server on a server without OCaml installed.
Author: Sylvain Le Gall.
pftdbns [03-Apr-2007, version 0.4, Stable]
The name is a short hand for "put files to directories (sorted) by name structure". It takes filenames, maps each char of the filename into a char, representing the charclass of it (a..z and A..Z -> "l" (letter), 0...9 -> "d" (digit" and so on). This yields to an easy way of sorting files by names, based upon file-naming with certain filenaming-conventions.
Author: Oliver Bandel.
Scientific software
Plasma [05-Mar-2012, version 0.6, Beta] Has a Godi packageHas a documentation
Map/Reduce and distributed filesystem. This package contains two applications: PlasmaFS is a distributed filesystem, Plasma MapReduce is a Map/Reduce framework on top of PlasmaFS.
Author: Gerd Stolpmann.
UMLMON [18-Oct-2005, version 1.0.1, Stable] Has a Godi package
Gerd Stolpmann offers UMLMON, which is an add-on product to User Mode Linux (UML) that strongly simplifies its administration. Up to now a system operator needed several weeks to develop scripts in order to deploy User Mode Linux. UMLMON is a ready-to-use solution setting standards for UML operating, especially concerning the number of features and the operational safety.
Author: Gerd Stolpmann.
Major applications
Unison [09-Aug-2001, version 2.9.1, Mature] Has a Godi packageHas a documentation
Unison is a file-synchronization tool for Unix and Windows. (It also works on OSX to some extent, but it does not yet deal with 'resource forks' correctly; more information on OSX usage can be found on the unison-users mailing list archives.) It allows two replicas of a collection of files and directories to be stored on different hosts (or different disks on the same host), modified separately, and then brought up to date by propagating the changes in each replica to the other.
Whenjobs [19-Mar-2012, version 0.7, Beta] Has a documentation
Whenjobs is a powerful but simple cron replacement. Two key advantages over cron are a simpler syntax for writing rules and a powerful dependency system that lets one job depend on variables set when other jobs run (allowing, for example, one job to run only when another job has finished successfully).
Xara [27-Oct-2004, version 1.0, Stable]
Xara allows to do boolean regexp searches on the Debian package database in a LablGTK2 GUI.
Author: Berke Durak.