mac os 删除文件夹 存储空间没有释放的原因找到了,竟然同样的文件只占一份存储? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
luckyapple
V2EX    macOS

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

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

    昨天在 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  
    PRO
       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     Solana     4210 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 43ms UTC 10:14 PVG 18:14 LAX 03:14 JFK 06:14
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86