Versioning file system
![]() | This article provides insufficient context for those unfamiliar with the subject. |
A versioning file system is any file system which allows a computer file to exist in several versions at the same time. It is a form of revision control. Most common versioning file systems keep a configurable number of older copies of the file. Some limit the number of changes per minute or per hour to avoid storing large numbers of trivial changes. A different approach is taking periodic snapshots and making their contents accessible with similar semantics to normal file access.
A versioning file system is similar to a periodic backup, with several key differences. First, backups are normally written to separate media; versioning file systems write to the same hard drive (and normally the same folder, directory, or local partition). Second, backups are normally triggered on a timed basis; versioning occurs when the file changes. Third, backups are usually system-wide or partition-wide; versioning occurs independently on a file-by-file basis.
Versioning file systems provide some of the features of revision control systems. However, unlike most revision control systems, they are transparent.
Versioning file systems should not be confused with journaling file systems.
Implementations
TOPS-20
The first versioning filesystem was introduced in the TOPS-20 operating system.[citation needed]
Files-11 (OpenVMS)
A powerful example of a file versioning system is built into the OpenVMS operating system from Digital Equipment Corporation. In essence, whenever an application opens a file for writing, the file system automatically creates a new instance of the file, with a version number appended to the name. Version numbers start at 1 and count upward as new instances of a file are created. When an application opens a file for reading, it can either specify the exact file name including version number, or just the file name without the version number, in which case the most recent instance of the file is opened. The file system automatically deletes sufficiently old versions of a file when a new instance is created; the maximum number of files retained is configurable, with an upper limit of 32767.
Plan 9 Fossil
A Venti backed Fossil filesystem can provide a similar feature, where periodic snapshots are taken (often hourly) and a selection of these are stored forever into Venti (usually daily), while the others are discarded. This of course doesn't record every version of the file. The previous versions are made available at /archive.
ZFS
The ZFS supports Instantaneous snapshots and clones
Linux
![]() | This section needs expansion. You can help by adding to it. (May 2007) |
No mainstream Linux file system supports versioning, but a number of experimental/research and lesser-known solutions do, namely:
- Wayback (Filesystem) [1] - User-level Versioning File System for Linux
- CopyFS [2] - A copy-on-write, versioned filesystem
- ext3cow
- Elephantine File System
Note: A search for Elephantine File Systems on Jan 26 2008 yields no results which can provide more detail on the implementation or features of this product. However one other site ([3]) also refers to this project.
- VLFS (Filesystem)
- NILFS, which supports snapshotting.
- pdumpfs, authored by Satoru Takabayashi, is a simple daily backup system similar to Plan9's dumpfs, implemented in the Ruby (programming language). It functions as a snapshotting tool, which makes it possible to copy a whole directory to another location by using hardlinks. Used regularly, this can produce an effect similar to versioning[1].
Microsoft Windows
- Rollback Rx - Allows snapshots of disk partitions to be taken. Each snapshot contains only the differences between previous snapshots, and take only seconds to create. Can be reliably used to keep a Windows OS stable and/or protected from malware.
- GoBack - The GoBack software for Windows from Symantec enables reversion of files, directories or disks to previous states. It can record a maximum of 8GB in changes, and temporarily stops recording each change in the event of high I/O activity.
Others
- Write Anywhere File Layout - Network Appliance's storage solutions implement a file system called WAFL, which uses snapshot technology to keep different versions of all files in a volume around.
- Subversion has a feature called "autoversioning" where a WebDAV source with a subversion backend can be mounted as a file system on systems that support this kind of mount (Linux, Windows and others do) and saves to that file system generate new revisions on the revision control system.[2]