Versioning file system: Difference between revisions

Content deleted Content added
Tags: Reverted wikilinks removed Visual edit
Adding local short description: "Computer file system", overriding Wikidata description "file system which provides for the concurrent existence of several versions of a file"
 
(8 intermediate revisions by 6 users not shown)
Line 1:
{{Short description|Computer file system}}
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 withusing methods similar semanticsas those tofor normal file access.
 
== Similar technologies ==
Line 15 ⟶ 16:
Versioning file systems should not be confused with [[journaling file system]]s. Whereas [[journaling file system]]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 Storagestorage ===
Some [[Objectobject storage]] implementations offers object versioning, such as [[Amazon S3]].
 
==Implementations==
Line 31 ⟶ 32:
 
===Linux===
On February 8, 2004, Kiran-Kumar Muniswamy-Reddy, Charles P. Wright, Andrew Himmer, and Erez Zadok (all from [[Stony Brook University]]) proposed an application that was user friendly to many of the users who tested the app. The system was developed with Linux software, so it was first operated on Linux.<ref>{{Cite web|title=A Versatile and User-Oriented Versioning File System|url=https://www.filesystems.org/docs/versionfs-fast04/index.html|last=Kiran-Kumar Muniswamy-Reddy, Charles P. Wright, Andrew Himmer, and Erez Zadok|date=8 February 2004|website=FiST: Stackable File System Language and Templates}}</ref>
 
* [[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]] - Most recent change was in 2014. [https://<ref>{{github.com/|OGAWAHirofumi/linux-tux3]}}.</ref>
* [[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]]) proposed ana applicationstackable thatfile wassystem userVersionfs, friendlyproviding toa manyversioning oflayer theon userstop who tested the app. The system wasof developedany withother Linux software,file so it was first operated on Linuxsystems.<ref>{{Cite webconference |title=A Versatile and User-Oriented Versioning File System |url=https://www.filesystems.org/docs/versionfs-fast04/index.html |lastauthor1=Kiran-Kumar Muniswamy-Reddy, |author2=Charles P. Wright, |author3=Andrew Himmer, and |author4=Erez Zadok |date=8 February 2004 |websiteconference=FiST:Third StackableUSENIX FileConference Systemon LanguageFile and TemplatesStorage Technologies (FAST 2004)}}</ref>
 
===LMFS===
Line 45 ⟶ 47:
 
===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 ===
Line 53 ⟶ 55:
=== Related software ===
The following are not versioning filesystems, but allow similar functionality.
* [[Apple File System|APFS]]<ref>{{Cite web|title=About Apple File System|url=https://developer.apple.com/documentation/foundation/file_system/about_apple_file_system/|url-status=live|access-date=2021-06-09|website=Apple Developer Documentation}}</ref> and [[ZFS]] support instantaneous snapshots and clones.
* [[Btrfs]] supports snapshots.<ref>http://www.oracle.com/technetwork/articles/servers-storage-admin/advanced-btrfs-1734952.html Snapshots, Clones, and Seed Devices" "snapshots" sub bullet.</ref>
* [[HAMMER (file system)|HAMMER]] in DragonFlyBSD has the ability to store revisions in the filesystem.
* [[NILFS]], which supports [[snapshot (computer storage)|snapshotting]].
* [[Plan 9 from Bell Labs|Plan 9]]'s [[Fossil (file system)|Fossil]] file system can provide a similar feature, taking periodic snapshots (often hourly) and making them available in {{mono|/n/snap}}. Fossil can forever archive a snapshot into [[Venti (software)|Venti]] (usually one snapshot each day) and make them available in {{mono|/n/dump}}. 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]]'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 (programming language)|Ruby]]. 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.<ref>[https://archive.today/20120701101406/http://0xcc.net/pdumpfs/index.html.en pDumpFS Homepage]</ref>
Line 70 ⟶ 72:
==See also==
* [[Backup]]
* [[Comparison of revision version-control software]]
* [[Copy -on -write]]
* [[Object storage]]