V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shanghai1943
V2EX  ›  macOS

MacOS 对于重复文件是否有存储上的优化

  •  
  •   shanghai1943 · 48 天前 · 1595 次点击
    这是一个创建于 48 天前的主题,其中的信息可能已经有所发展或是发生改变。

    印象中从某个 os 版本开始,似乎对于重复的文件只会存一份?相当于一个文件拷贝了多份,但底层存储还是只存了一份,其他的知识逻辑关联之类的。

    不知是我记错了还是确实有这样的优化?

    8 条回复    2021-09-10 13:58:45 +08:00
    shanghai1943
        1
    shanghai1943   48 天前   ❤️ 1
    网上找到了一篇文章,看起来只有在进行 [复制] 操作的时候才有的优化?
    Building
        2
    Building   48 天前 via iPhone   ❤️ 2
    首先,定义什么是重复文件,Sandbox 还是会复制一份过去的。
    chendy
        3
    chendy   48 天前   ❤️ 1
    不是对重复文件的优化,是实现了“写时复制”机制优化了复制操作
    Damenly1
        4
    Damenly1   48 天前   ❤️ 2
    而且必须是 cp -c $src $dst 。macos 应该也提供了像 linux FICLONERANGE 这样 syscall,只有调用这个就行。
    比如:


    $df -h
    /dev/disk3s5s1 221Gi 14Gi 38Gi 28% 553781 2312235219 0% /

    $ls -lh 01
    [email protected] 1 damenly staff 1.5G Sep 1 18:48 01.mp4

    $cp 1 2
    /dev/disk3s5s1 221Gi 14Gi 37Gi 29% 553781 2312235219 0% /

    $cp -c 1 3
    /dev/disk3s5s1 221Gi 14Gi 37Gi(76675184) 29% 553781 2312235219 0% /

    $dd if=/dev/zero of=03 bs=4k count=131072 conv=sync
    131072+0 records in
    131072+0 records out
    536870912 bytes transferred in 0.304234 secs (1764664248 bytes/sec)

    $df
    /dev/disk3s5s1 462557800 29943296 75626360 29% 553781 2312235219 0% /
    WuSiYu
        5
    WuSiYu   48 天前
    是存在的,但仅限于“复制时不会立即创建副本,直到一者发生更改”,这是 cow 文件系统的一个普遍特性
    secondwtq
        6
    secondwtq   48 天前
    CoW 是 CoW,dedup 是 dedup 。
    CoW 倒是不难做,dedup 不好搞,相当于你要不断扫描文件系统中所有的文件。ZFS 开 dedup 好像要好多内存来着。
    WebKit
        7
    WebKit   48 天前 via Android
    有吗?我记得是 iOS 上啊
    clrss
        8
    clrss   46 天前
    @secondwtq 正解.

    @shanghai1943 如果要 dedup 的话, 有第三方软件.
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1063 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 22:09 · PVG 06:09 · LAX 15:09 · JFK 18:09
    ♥ Do have faith in what you're doing.