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

mac os 删除文件夹 存储空间没有释放的原因找到了,竟然同样的文件只占一份存储?

  •  
  •   luckyapple · 2023-01-07 08:49:59 +08:00 via iPhone · 3418 次点击
    这是一个创建于 711 天前的主题,其中的信息可能已经有所发展或是发生改变。

    昨天在 mac 上删除了一个 40g 的文件夹,废纸篓也删了,删除后发现可用存储空间并没有增多,搜索了网上,说时间机器备份的问题,我根本没有打开那个自动备份,看到有人说重装系统可以解决,我重装了系统,也是不行,我计算了电脑上的所有文件,发现和显示的是是吻合的,难不成我昨天删除的是空文件夹,不可能啊,我为了释放空间专门找了个 40g 的文件夹删除的,

    然后我突然想到那个照片文件夹包含几个小文件夹,里面的所有照片我统一复制到一个大文件夹里了,难不成同样的文件在磁盘下只存储一份,只占一份存储空间?我实验了一下把一个 40g 的文件夹拷贝了一份,发现存储空间也没有变少,卧槽,macos 牛逼啊,果然同样的文件只占一份存储空间 我靠,这是怎么实现的,我删除文件存储空间没有变化的原因找到了

    19 条回复    2023-01-09 06:02:17 +08:00
    duke807
        1
    duke807  
       2023-01-07 08:56:50 +08:00 via Android   ❤️ 2
    这很简单,copy-on-write 即可,很通用的技术
    Hack3rHan
        2
    Hack3rHan  
       2023-01-07 09:03:47 +08:00 via iPhone   ❤️ 1
    APFS 是这样的
    Alexonx
        3
    Alexonx  
       2023-01-07 09:08:27 +08:00   ❤️ 1
    这是所谓的去重(Deduplication)特性,一般是由文件系统在数据块层面上实现的.不仅仅是 Mac 使用的 APFS,很多文件系统都支持这个特性.配合 COW(写时复制)技术,可以很好的改进时间机器的存储占用量(快照在底层实际上只存储修改了的部分).当然其实也不算特别"牛逼"或者"独一份"的技术,各个操作系统阵营的新文件系统都有这个功能(Windows-ReFS,Linux 和 Unix 阵营的 ZFS 等)
    不是文件系统专业人生,如有疏漏请指正.
    cwbsw
        4
    cwbsw  
       2023-01-07 09:42:36 +08:00   ❤️ 4
    技术是不新鲜,但是苹果应该是目前唯一在个人设备上大规模应用的。
    luckyapple
        5
    luckyapple  
    OP
       2023-01-07 09:47:22 +08:00 via iPhone
    @duke807 但删除了文件没有释放空间确实让人很迷惑,而且网上一搜都没有正确答案
    luckyapple
        6
    luckyapple  
    OP
       2023-01-07 09:49:53 +08:00 via iPhone
    @Hack3rHan 我还以为是 mac 系统出现了 bug😄
    xiangyuecn
        7
    xiangyuecn  
       2023-01-07 09:55:26 +08:00   ❤️ 2
    200 块的硬盘卖 2000 ,还帮你省空间,简直良心啊
    luxinxin
        8
    luxinxin  
       2023-01-07 10:08:16 +08:00 via iPhone
    收益上,个人设备上重复文件的比例不高,去重后收益不大。成本上,一方面类似这些“删了之后空间不变”或者“改一下文件要多使用很多空间”的现象普通用户不好理解,另外一方面无论是块级还是文件级去重,都有计算代价
    xtinput
        9
    xtinput  
       2023-01-07 10:16:19 +08:00
    @xiangyuecn 200 块?哪一个型号的读写速度 7G/s 的 200 块钱?苹果官方是加 500G 1500 块钱,然后同样速度的三星是 500 块钱,而且苹果又没强迫你买,现在 windows 阵营也有很多内存固化在主板上了,说不定后面硬盘一样的固化
    xtinput
        10
    xtinput  
       2023-01-07 10:20:32 +08:00
    @xiangyuecn 哦,还有,经销商拿货 8 折,所以 1200 500G ,而且 90%的用户都不会去定制硬盘,笔记本的硬盘只是用来运行系统的,资料基本都额外用移动硬盘,数据比硬件更值钱
    kennir
        11
    kennir  
       2023-01-07 10:59:33 +08:00   ❤️ 1
    这个就是当年 APFS 重点宣传的特性之一呀
    shawnbluce
        12
    shawnbluce  
       2023-01-07 11:40:25 +08:00
    刚刚做了个实验,在 Terminal 中用 dd if=/dev/zero 生成了 1G 的文件,当时我电脑的「设置-通用-存储空间」里显示已用 201 G
    shawnbluce
        13
    shawnbluce  
       2023-01-07 11:43:51 +08:00
    @shawnbluce #12

    貌似是在 UI 上点复制粘贴和在终端里用 cp 命令的系统调用不同。

    刚刚做了个实验,在 Terminal 中用 dd if=/dev/zero 生成了 1G 的文件,当时我电脑的「设置-通用-存储空间」里显示已用 201 G ,紧接着继续 cp 1g_data 1g_data_000; cp 1g_data 1g_data_001 这样 cp 下去发现每次显示的已用空间都会变大。但是我打开「访达」再 Command + C 然后 Command + V 之后再去看存储就不会增加。

    而且也解开了我之前的一个好奇点:为什么同一个文件在 Terminal 中复制就比较慢,但是在访达中复制不论多大都很快。
    cwbsw
        14
    cwbsw  
       2023-01-07 12:00:21 +08:00
    @shawnbluce 命令行用 cp -c 就是写时复制。
    wu67
        15
    wu67  
       2023-01-07 14:45:29 +08:00   ❤️ 1
    我只知道, 我的音乐文件, 在存储空间里面, Music 分类算一次, Document 分类再算一次, 相当于一个文件占用了两份空间...
    alamaya
        16
    alamaya  
       2023-01-07 15:12:35 +08:00 via iPhone
    @xtinput 不给用户自己扩展也叫不强制?更别说现在随便一个 pcie4 的 ssd 都有这速度,新 air 的丐版还缩水了
    kaneg
        17
    kaneg  
       2023-01-07 20:00:01 +08:00 via iPhone
    有可能这种 copy 用的是 hard link ,在文件系统看上去是两个独立文件,但实际指向的是一个 inode 。
    bjfane
        18
    bjfane  
       2023-01-07 21:17:40 +08:00
    很好的帖子,现在好像关于本机里面显示的占用很小,clean my mac 这种 显示的大。 然后我还是 pnpm 的重度用户,所以本来就有 hard link , 所以真实的占多少 都不知道了
    ihwbunny
        19
    ihwbunny  
       2023-01-09 06:02:17 +08:00
    不是 hard link ,是 APFS 的特性而已
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3132 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:26 · PVG 21:26 · LAX 05:26 · JFK 08:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.