A versioning file system is any computer file system which allows a computer file to exist in several versions at the same time. Thus it is a form of revision control. 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 with similar semantics to normal file access. Similar technologies Backup A versioning file system is similar to a periodic backup, 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 systems. 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 systems. Whereas journaling file systems 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. 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. Files-11 (RSX-11 and OpenVMS) A powerful example of a file versioning system is built into the RSX-11 and OpenVMS operating system from Digital Equipment Corporation. In essence,