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 / 问题 / 129969
In Process
BCS
BCS
Asked: 2010-04-07 18:57:57 +0800 CST2010-04-07 18:57:57 +0800 CST 2010-04-07 18:57:57 +0800 CST

有没有办法创建目录的写时复制副本?

  • 772

我正在考虑一种情况,我会创建一个目录副本,调整一些文件,然后对结果进行一些处理。这将经常进行,可能一天几十次。(确切的用例是测试补丁提交;复制代码,打补丁,构建/测试/报告/等等。)

我正在寻找的可以通过创建一个新的目录结构并使用来自原始的硬链接来填充它来完成。但是,这仅在您使用的所有工具都删除并重新创建文件而不是就地编辑它们时才有效。

有没有办法让文件系统对文件进行写时复制?


注意:我知道许多 FS 在块级别使用 COW(所有更新都是通过写入新块完成的)但这不是我想要的。

filesystems hardlink
  • 5 5 个回答
  • 6264 Views

5 个回答

  • Voted
  1. Kamil Kisiel
    2010-04-07T21:03:49+08:002010-04-07T21:03:49+08:00

    如果您为文件服务器选择平台,我会选择最近的 OpenSolaris 构建并使用 ZFS 的重复数据删除功能。这样文件的副本就不会占用额外的空间,甚至文件之间的公共段也不会被复制。

    您可以在 Jeff Bonwick 的博客上的这篇文章中阅读有关 ZFS 重复数据删除的所有信息。

    • 8
  2. ankostis
    2019-02-09T08:34:57+08:002019-02-09T08:34:57+08:00

    大多数linux 虚拟化解决方案在虚拟化操作系统之间提供文件级 COW(从 WP 复制):

    • 是的:
      • Docker、Linux-VServer、lmctfy、LXC、Singularity、Virtuozzo、Sandboxie、systemd-nspawn、Solaris Containers(ZFS)、FreeBSD jail(ZFS)、OpenVZ
    • 不:
      • chroot、sysjail、WPAR、iCore 虚拟帐户、Turbo
    • 0
  3. n3ko
    2020-05-29T13:20:44+08:002020-05-29T13:20:44+08:00

    我在寻找更好的解决方案而不是我当前的解决方案时发现了这个问题,例如:cp -al SOURCEDIRNAME copy.SOURCEDIRNAME或

    find SOURCEDIRNAME -type d -exec mkdir -p copy.{} ';'
    find SOURCEDIRNAME -type f -exec ln {} copy.{} ';'
    

    在这一点上,我有一个带有一堆硬链接的结构副本。这工作相对较快,并且不需要多一倍的磁盘空间,因为我们不会复制所有文件。现在我可以在复制目录上做一些“东西”(比如patch或构建)。如果他们不修改原始文件,只需重命名它们和/或创建新文件。工作后,我有一些结果,可以删除复制目录并重新开始。

    如果您使用更复杂的工具并且不信任它们(或者您知道它们试图覆盖现有文件),您可能需要cowdancer。

    • 0
  4. mmv-ru
    2020-05-29T15:54:34+08:002020-05-29T15:54:34+08:00

    尝试使用 UniouFS、AUFS 或Overlay Filesystem之一(取决于您的发行版支持哪个)

    例如 docker 使用的 OverlayFS 作为合并层的驱动程序之一

    覆盖文件系统

    覆盖主要涉及目录。如果给定的名称同时出现在上层和下层文件系统中,并且引用其中任何一个中的非目录,则隐藏下层对象 - 该名称仅指上层对象。

    在上下对象都是目录的情况下,形成一个合并目录。

    在挂载时,作为挂载选项“lowerdir”和“upperdir”给出的两个目录合并为一个合并目录:

    mount -t overlay overlay -olowerdir=/lower,upperdir=/upper,workdir=/work /merged
    

    “workdir”需要是与upperdir 相同文件系统上的空目录。

    • 0
  5. Dmitry Trukhanov
    2010-04-07T21:56:47+08:002010-04-07T21:56:47+08:00

    可能是 SVN 或其他版本控制工具(git、cvs)?

    • -2

相关问题

  • 我如何知道 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