V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
edis0n0
V2EX  ›  Linux

Linux 下 dedup 工具原理是什么?如果我之后修改了其中一个文件的一部分,文件是变回占两份空间还是只占 1 份 + diff 部分的空间? dedup 有可能导致安全问题(越权访问 / 实现的有问题导致两份副本同时被修改)吗?

  •  
  •   edis0n0 · 2023-02-08 17:27:44 +08:00 · 1433 次点击
    这是一个创建于 673 天前的主题,其中的信息可能已经有所发展或是发生改变。
    iBugOne
        1
    iBugOne  
       2023-02-08 18:02:09 +08:00
    这些问题至少取决于你用啥软件和文件系统,基本方式是先扫描再去重。

    扫描重复文件的方法都比较简单粗暴,比较文件大小和内容( checksum )。

    创建 dedup 文件的方法取决于文件系统,简单的方法是 hard link ,那么这时候改其中一份就会同步改掉另一份,但是由于两个文件指向同一个 inode ,权限什么的都是一样的,不会有越权访问; hard link 方式如果想要两份文件独立修改,需要软件支持,并且改完之后就变回占两份空间了。

    如果有 FS 支持的话(比如 XFS / Btrfs ),可以通过 reflink 模式实现 dedup ,两个文件具有不同的 inode ,但底层使用相同的分配块;修改其中一份文件会分配新的块并更新分配表,另一份不受影响,也没有越权访问问题。

    总之你这问题问得太宽泛了,没法具体回答,常见情况大概如上
    busier
        2
    busier  
       2023-02-25 03:50:21 +08:00
    了解下 Copy On Write
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   907 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:06 · PVG 04:06 · LAX 12:06 · JFK 15:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.