Versioning file system
   HOME

TheInfoList



OR:

A versioning file system is any computer file system which allows a
computer file A computer file is a System resource, resource for recording Data (computing), data on a Computer data storage, computer storage device, primarily identified by its filename. Just as words can be written on paper, so too can data be written to a ...
to exist in several versions at the same time. Thus it is a form of
revision control Version control (also known as revision control, source control, and source code management) is the software engineering practice of controlling, organizing, and tracking different versions in history of computer files; primarily source code ...
. Most common versioning file systems keep a number of old copies of the file. Some limit the number of changes per minute or per hour to avoid storing large numbers of trivial changes. Others instead take periodic snapshots whose contents can be accessed using methods similar as those for normal file access.


Similar technologies


Backup

A versioning file system is similar to a periodic
backup In information technology, a backup, or data backup is a copy of computer data taken and stored elsewhere so that it may be used to restore the original after a data loss event. The verb form, referring to the process of doing so, is "wikt:back ...
, with several key differences. * Backups are normally triggered on a timed basis, while versioning occurs when the file changes. * Backups are usually system-wide or partition-wide, while versioning occurs independently on a file-by-file basis. * Backups are normally written to separate media, while versioning file systems write to the same hard drive (and normally the same folder, directory, or local partition).


In comparison to revision control systems

Versioning file systems provide some of the features of
revision control system Version control (also known as revision control, source control, and source code management) is the software engineering practice of controlling, organizing, and tracking different versions in history of computer files; primarily source code ...
s. However, unlike most revision control systems, they are transparent to users, not requiring a separate "commit" step to record a new revision.


Journaling file system

Versioning file systems should not be confused with
journaling file system A journaling file system is a file system that keeps track of changes not yet committed to the file system's main part by recording the goal of such changes in a data structure known as a " journal", which is usually a circular log. In the ev ...
s. Whereas
journaling file system A journaling file system is a file system that keeps track of changes not yet committed to the file system's main part by recording the goal of such changes in a data structure known as a " journal", which is usually a circular log. In the ev ...
s work by keeping a log of the changes made to a file before committing those changes to that file system (and overwriting the prior version), a versioning file system keeps previous copies of a file when saving new changes. The two features serve different purposes and are not mutually exclusive.


Object storage

Some object storage implementations offers object versioning, such as
Amazon S3 Amazon Simple Storage Service (S3) is a service offered by Amazon Web Services (AWS) that provides object storage through a web service interface. Amazon S3 uses the same scalable storage infrastructure that Amazon.com uses to run its e-commerc ...
.


Implementations


ITS

An early implementation of versioning, possibly the first, was in MIT's ITS. In ITS, a filename consisted of two six-character parts; if the second part was numeric (consisted only of digits), it was treated as a version number. When specifying a file to open for read or write, one could supply a second part of ">"; when reading, this meant to open the highest-numbered version of the file; when writing, it meant to increment the highest existing version number and create the new version for writing. Another early implementation of versioning was in TENEX, which became
TOPS-20 The TOPS-20 operating system by Digital Equipment Corporation (DEC) is a proprietary OS used on some of DEC's 36-bit mainframe computers. The Hardware Reference Manual was described as for "DECsystem-10/DECSYSTEM-20 Processor" (meaning the DEC PDP ...
.


Files-11 (RSX-11 and OpenVMS)

A powerful example of a file versioning system is built into the
RSX-11 RSX-11 is a discontinued family of multi-user real-time operating systems for PDP-11 computers created by Digital Equipment Corporation. In widespread use through the late 1970s and early 1980s, RSX-11 was influential in the development of later ...
and
OpenVMS OpenVMS, often referred to as just VMS, is a multi-user, multiprocessing and virtual memory-based operating system. It is designed to support time-sharing, batch processing, transaction processing and workstation applications. Customers using Op ...
operating system from
Digital Equipment Corporation Digital Equipment Corporation (DEC ), using the trademark Digital, was a major American company in the computer industry from the 1960s to the 1990s. The company was co-founded by Ken Olsen and Harlan Anderson in 1957. Olsen was president until ...
. 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 "purge" DCL/CCL command can be used at any time to manage the number of versions in a specific directory. By default, all but the highest numbered versions of all files in the current directory will be deleted; this behavior can be overridden with the /keep=n switch and/or by specifying directory path(s) and/or filename patterns. VMS systems are often scripted to purge user directories on a regular schedule; this is sometimes misconstrued by end-users as a property of the versioning system.


Linux

* NILFS – A log-structured file system supporting versioning of the entire file system and continuous snapshotting. In this list, this is the only one that is stable and included in the mainline kernel. *
Tux3 Tux3 is an open-source versioning filesystem created by Daniel Phillips. He introduced the filesystem as a public replacement for his Tux2 filesystem which had encountered licensing issues due to the filing of several patents. Phillips had previo ...
– Most recent change was in 2014. * Next3 – Most recent update was in 2012. * ext3cow – Most recent release was in 2005. On February 8, 2004, Kiran-Kumar Muniswamy-Reddy, Charles P. Wright, Andrew Himmer, and Erez Zadok (all from
Stony Brook University Stony Brook University (SBU), officially the State University of New York at Stony Brook, is a public university, public research university in Stony Brook, New York, United States, on Long Island. Along with the University at Buffalo, it is on ...
) proposed a stackable file system Versionfs, providing a versioning layer on top of any other Linux file systems.


LMFS

The Lisp Machine File System supports versioning. This was provided by implementations from MIT, LMI, Symbolics and Texas Instruments. Such an operating system was Symbolics Genera.


macOS

Starting with
Lion The lion (''Panthera leo'') is a large Felidae, cat of the genus ''Panthera'', native to Sub-Saharan Africa and India. It has a muscular, broad-chested body (biology), body; a short, rounded head; round ears; and a dark, hairy tuft at the ...
(10.7),
macOS macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
has a feature called
Versions Version may refer to: Computing * Software version, a set of numbers that identify a unique evolution of a computer program * VERSION (CONFIG.SYS directive), a configuration directive in FreeDOS Music * Cover version * Dub version * Remix * Versi ...
which allows Time Machine-like saving and browsing of past versions of documents for applications written to use Versions. This functionality, however, takes place at the application layer, not the filesystem layer; Lion and later releases do not incorporate a true versioning file system.


SCO OpenServer

HTFS, adopted as the primary filesystem for SCO OpenServer in 1995, supports file versioning. Versioning is enabled on a per-directory basis by setting the directory's setuid bit, which is inherited when subdirectories are created. If versioning is enabled, a new file version is created when a file or directory is removed, or when an existing file is opened with truncation. Non-current versions remain in the filesystem namespace, under the name of the original file but with a suffix attached consisting of a semicolon and version sequence number. All but the current version are hidden from directory reads (unless the SHOWVERSIONS environment variable is set), but versions are otherwise accessible for all normal operations. The environment variable and general accessibility allow versions to be managed with the usual filesystem utilities, though there is also an "undelete" command that can be used to purge and restore files, enable and disable versioning on directories, etc.


Others

*
Subversion Subversion () refers to a process by which the values and principles of a system in place are contradicted or reversed in an attempt to sabotage the established social order and its structures of Power (philosophy), power, authority, tradition, h ...
has a feature called "autoversioning" where a
WebDAV WebDAV (Web Distributed Authoring and Versioning) is a set of extensions to the Hypertext Transfer Protocol (HTTP), which allows user agents to collaboratively author contents ''directly'' in an HTTP web server by providing facilities for conc ...
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. * The commercial Clearcase configuration management and revision control software has also supported "MVFS" (multi version file system) on HP-UX, AIX and Windows since the early 1990s.


Related software

The following are not versioning filesystems, but allow similar functionality. * APFS and
ZFS ZFS (previously Zettabyte File System) is a file system with Volume manager, volume management capabilities. It began as part of the Sun Microsystems Solaris (operating system), Solaris operating system in 2001. Large parts of Solaris, includin ...
support instantaneous snapshots and clones. *
Btrfs Btrfs (pronounced as "better F S", "butter F S", "b-tree F S", or "B.T.R.F.S.") is a computer storage format that combines a file system based on the copy-on-write (COW) principle with a logical volume manager (distinct from Linux's LVM), d ...
supports snapshots. *
HAMMER A hammer is a tool, most often a hand tool, consisting of a weighted "head" fixed to a long handle that is swung to deliver an impact to a small area of an object. This can be, for example, to drive nail (fastener), nails into wood, to sh ...
in DragonFlyBSD has the ability to store revisions in the filesystem. * NILFS, which supports snapshotting. * Plan 9's
Fossil A fossil (from Classical Latin , ) is any preserved remains, impression, or trace of any once-living thing from a past geological age. Examples include bones, shells, exoskeletons, stone imprints of animals or microbes, objects preserve ...
file system can provide a similar feature, taking periodic snapshots (often hourly) and making them available in . Fossil can forever archive a snapshot into
Venti Venti may refer to: * Venti (software), a network storage system * Venti, a character in 2020 video game '' Genshin Impact'' *A coffee cup size at Starbucks *The Roman equivalent of the Greek Anemoi In ancient Greek religion and Greek mytho ...
(usually one snapshot each day) and make them available in . If multiple changes are made to a file during the interval between snapshots, only the most recent will be recorded in the next snapshot. * Write Anywhere File Layout -
NetApp NetApp, Inc. is an American data infrastructure company that provides unified data storage, integrated data services, and cloud operations (CloudOps) solutions to enterprise customers. The company is based in San Jose, California. It has ranked ...
's storage solutions implement a file system called WAFL, which uses snapshot technology to keep different versions of all files in a volume around. * pdumpfs, authored by Satoru Takabayashi, is a simple daily backup system similar to Plan 9's /n/dump, implemented in
Ruby Ruby is a pinkish-red-to-blood-red-colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sapph ...
. 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. *Microsoft Windows ** Shadow Copy - is a feature introduced by Microsoft with Windows Server 2003. Shadow Copy allows for taking manual or automatic backup copies or snapshots of a file or folder on a specific volume at a specific point in time. ** 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 (discontinued) - 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. ** Versomatic - Versomatic software by Acertant automatically tracks file changes and preemptively archives a copy of a file before it is modified. * Cascade File System exposes a
Subversion Subversion () refers to a process by which the values and principles of a system in place are contradicted or reversed in an attempt to sabotage the established social order and its structures of Power (philosophy), power, authority, tradition, h ...
or Perforce repository via a file system driver. The user must still explicitly decide when to commit changes. *
git Git () is a distributed version control system that tracks versions of files. It is often used to control source code by programmers who are developing software collaboratively. Design goals of Git include speed, data integrity, and suppor ...
implementation documents call git a "content addressable filesystem with a VCS user interface written on top of it." There's also a 3rd-party FUSE implementation exists that may extend git as a mountable, read-write versioning filesystem.


See also

*
Backup In information technology, a backup, or data backup is a copy of computer data taken and stored elsewhere so that it may be used to restore the original after a data loss event. The verb form, referring to the process of doing so, is "wikt:back ...
*
Comparison of version-control software The following tables describe attributes of notable version control and software configuration management (SCM) systems that can be used to compare and contrast the various systems. For SCM software not suitable for source code, see Comparis ...
*
Copy-on-write Copy-on-write (COW), also called implicit sharing or shadowing, is a resource-management technique used in programming to manage shared data efficiently. Instead of copying data right away when multiple programs use it, the same data is shared ...
* Object storage


References


External links

* {{DEFAULTSORT:Versioning File System Computer file systems