AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 124595
In Process
Dale Forester
Dale Forester
Asked: 2010-03-21 10:55:37 +0800 CST2010-03-21 10:55:37 +0800 CST 2010-03-21 10:55:37 +0800 CST

如何在 ext3/4 上获得透明、高效的文件系统快照或版本控制?

  • 772

我一直在考虑对文件系统进行版本控制。这是一个杀手级功能,我看过 Wayback、ext3cow、zfs、fuse 解决方案,或者只是 cvs/svn/git 覆盖。

我认为 ext3cow 是满足我要求的模型。透明、高效,但我可以不用额外的ls abc@timestamp功能。只要我以某种方式对我的文件进行自动化、透明的版本控制。

它可以是瞬时的,也可以基于 10 秒、30 秒、1 米、5 米、15 米等间隔的快照。只是可以有效处理给定目录中的数千个文件大小各异的东西,大多数很小,但有些100m 以上至 1gb。

ZFS 并不是一个真正的选项,因为我在 linux 上(并且不希望通过 fuse 使用它,因为我已经有一个我想要版本的 ext3 设置,而不是新的东西)。

有哪些解决方案?

filesystems ext3 git versioning
  • 6 6 个回答
  • 3315 Views

6 个回答

  • Voted
  1. McJeff
    2010-03-21T11:38:12+08:002010-03-21T11:38:12+08:00

    如果使用 LVM 包装文件系统,则可以使用底层逻辑卷层创建快照卷。这是一个非常简单的过程,并且对于标准的“快照”事物(例如备份和撤消rm -froopsies)非常有效。

    • 7
  2. saulius2
    2013-12-24T04:37:43+08:002013-12-24T04:37:43+08:00

    经过 8 年的搜索,我找到了Marco R. Gazzetta的SVNFS (这与John Madden的同名旧项目不同[后者做不同的事情])。此SVNFS在 r/w 操作中透明地使用svn :

    我没有创建一个自己进行版本控制的文件系统,而是使用了一个现有的版本控制工具 subversion,并使其使用透明。优点是这个文件系统不需要你学习新工具,如果你知道颠覆

    它是用 Python 编写的并使用 FUSE:

    现在您通过调用附加的脚本来启动版本控制文件系统:

    python svnfs.py -o svnroot=/home/marco/svnfiles /home/marco/myfiles
    

    一切正常后,您应该能够获得两个目录的列表并查看内容是否相同。

    现在,如果您在任一目录中创建(几乎)任何文件,它也会显示在栅栏的另一侧。最大的不同是,如果在 myfiles 目录中创建文件,它会自动置于版本控制之下(反之则不然)。

    在示例中, SVNFS为 repo 使用单独的目录。虽然我没有测试过。为了我的需要,我想在我的工作目录中有存储库。


    我还发现了4 年前对 Reiser4 的版本控制功能的参考:

    请参阅 Reiser 4。文件是目录。

    例如:diff -u main.C main.C/r/123

    或访问属性

    cat main.C/p/svn-eolstyle
    
    echo "foobar" > main.C/p/my-property 
    

    似乎最好遵循该模型,因为主要文件系统已经在走这条路。

    ——保罗·奎尔纳

    但我也没有检查过。


    两年前,我进一步搜索,找到了用于生成可堆叠文件系统的项目FiST并联系了教授。石溪大学的Erez Zadok,很久以前是versionfs项目的顾问/导师。报价:

    http://www.fsl.cs.sunysb.edu/docs/versionfs-fast04/

    http://www.fsl.cs.sunysb.edu/docs/versionfs-msthesis/versionfs.pdf

    允许用户轻松高效地管理自己的版本。Versionfs 为典型的类似用户的工作负载提供了不超过 4% 的开销。Versionfs 允许用户分别通过保留策略和存储策略选择保留哪些版本以及如何存储它们。用户可以选择最能满足其个人需求的空间和性能之间的权衡:完整副本、压缩副本或块增量。尽管用户可以控制他们的版本,但管理员可以强制执行最小值和最大值,并为用户提供合理的默认值。

    此外,通过使用 libversionfs,未修改的应用程序可以检查、操作和恢复版本。用户可以简单地运行熟悉的工具来访问以前的文件版本,而不需要用户学习单独的命令,或者要求系统管理员重新挂载文件系统。如果没有 libversionfs,以前的版本对用户完全隐藏。

    最后,Versionfs 超越了过去系统使用的简单的写时复制:我们实现了更改时复制。虽然一开始我们预计新旧页面之间的比较会太昂贵,但我们发现系统时间的增加被减少的 I/O 和与写入未更改的块相关的 CPU 时间所抵消。当使用更昂贵的存储策略(例如,压缩)时,更改时复制更加有用。

    这对我来说似乎很有趣,但联系参与该项目的人发现它的源代码不为人知。教授本人在邮件中说:

    Versionfs 的代码现在很老了,它只在内核 2.4 中工作。如果您仍然想要一个可堆叠的版本控制 f/s,那么就必须从头开始编写它——可能基于 wrapfs(请参阅 wra​​pfs.filesystems.org/)。

    因此,尽管可堆叠文件系统的概念对我来说似乎非常好,但这里没有工作项目。有人想开始基于 onf wrapfs的项目吗,请通知我:)

    • 6
  3. vtemian
    2014-12-31T10:24:37+08:002014-12-31T10:24:37+08:00

    你可以检查gitfs。这是一个基于 git 的 FUSE 文件系统,非常稳定且超级易用。

    基本上,它是对 git 的覆盖。每当您更新文件或目录时,它都会使用该更改创建一个提交(知道批量提交,因此当您解压缩档案时不会有 100 个提交)。还知道使用“始终接受我的”策略来同步您的遥控器并合并冲突。

    当你挂载它时,它会给你带来两个目录:current和history。 ├── current │   ├── test1.md │   ├── test2.md │   ├── test3.md -> current/test2.md │   ├── test4.md │   └── test_directory └── history ├── 2014-11-23 │   ├── 20-00-21-d71d1579a7 │   │   └── testing.md │   └── 20-42-32-7d09611d83 │   ├── test2.md │   └── testing.md ├── 2014-12-08 │   ├── 16-38-30-6d6e71fe47 │   │   ├── test2.md │   │   └── test1.md

    更多信息可以在这个页面上找到。

    • 4
  4. Shane Geiger
    2011-05-07T04:17:36+08:002011-05-07T04:17:36+08:00

    bup 看起来很有希望。

    较早的讨论在这里: http: //lwn.net/Articles/380983/

    • 2
  5. Jason
    2010-03-21T16:11:47+08:002010-03-21T16:11:47+08:00

    试试rsnapshot——我自己没有使用过,但是在查看@文件级重复数据删除系统时偶然发现了它。

    • 0
  6. ewwhite
    2011-05-07T04:36:17+08:002011-05-07T04:36:17+08:00

    看看 R1Soft 的 Hot Copy。

    http://www.r1soft.com/tools/linux-hot-copy/

    这是一个内核模块,它在不使用 LVM 的情况下为标准系统提供写时复制快照。它对我来说效果很好,我可以在不重新启动的情况下安装它。

    另见:http ://www.r1soft.com/tools/linux-hot-copy/hcp-tips/

    • 0

相关问题

  • 我如何知道 AIX 中磁盘上的文件系统是什么?

  • 控制 UNIX 目录内容用户组所有权

  • 在 Ubuntu 上将 Windows 磁盘分区与 Linux 分区合并

  • 在 VMPlayer 上 Windows 和 Linux 之间共享目录的最佳方式

  • md5sum 重复为同一台机器上的同一文件提供不同的校验和

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve