Versioning file system: Difference between revisions

Content deleted Content added
m Replaced outdated html codes with wikicodes. Please see Category:Articles with HTML markup.
Adding local short description: "Computer file system", overriding Wikidata description "file system which provides for the concurrent existence of several versions of a file"
 
(13 intermediate revisions by 9 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 42 ⟶ 44:
 
===macOS===
Starting with [[Mac OS X Lion|Lion]] (10.7), [[macOS]] has a feature called [[Mac OS X Lion#New or changed features|Versions]] which allows [[Time Machine (macOS)|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;<ref>{{cite web|title=Mac OS X Lion file versions, part 2| date=6 August 2011 |url=http://tekonomist.wordpress.com/2011/08/06/mac-os-x-lion-file-versions-part-2/|access-date=28 April 2012}}</ref> Lion and later releases do not incorporate a true versioning file system.
 
===SCO OpenServer===
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)|HammerFSHAMMER]] 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.istoday/20120701101406/http://0xcc.net/pdumpfs/index.html.en pDumpFS Homepage]</ref>
*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.
Line 66 ⟶ 68:
** [[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 (software)|Subversion]] or [[Perforce]] repository via a file system driver. The user must still explicitly decide when to commit changes.
* [[git (software)|git]] implementation documents call git a "content addressable filesystem with a VCS user interface written on top of it."<ref>{{cite web|url=http://git-scm.com/book/en/v1/Git-Internals|title=Git Internals|quote=Git is fundamentally a content-addressable filesystem with a VCS user interface written on top of it.}}</ref> There's also a 3rd-party FUSE implementation exists that may extend git as a mountable, read-write versioning filesystem.<ref>{{cite web |title=What is Gitfs |url=https://www.presslabs.com/docs/code/gitfs/ |website=Presslabs |date=24 July 2015 |access-date=2022-03-07}}</ref>
 
==See also==
* [[Backup]]
* [[Comparison of revision version-control software]]
* [[Copy -on -write]]
* [[Object storage]]