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

2023-02-08 17:27:44 +08:00
 edis0n0
1415 次点击
所在节点    Linux
2 条回复
iBugOne
2023-02-08 18:02:09 +08:00
这些问题至少取决于你用啥软件和文件系统,基本方式是先扫描再去重。

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

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

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

总之你这问题问得太宽泛了,没法具体回答,常见情况大概如上
busier
2023-02-25 03:50:21 +08:00
了解下 Copy On Write

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/914348

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX