恼人的.DS_Store

Blood Boiling 2026-7-25 7 7/25

.DS_Store是什么?

.DS_Store的本质其实是桌面服务的“记忆本”,全称是Desktop Service Store(桌面服务存储)。它不是系统核心文件,更像是服务于访达的“秘书”。核心功能就是记录你打开这个文件夹时的样子”。它就是一个纯纯的文件夹视图元数据存储文件,主要职责就是存储其所在文件夹的自定义视图属性。默认是隐藏文件,在访达里里按 Command + Shift + . 才能看到它。

相信Mac用户也许都经历过这样的至暗时刻,每次把文件拷给用Windows的同事,或者往服务器上传东西,总能看到那个阴魂不散的 .DS_Store,不管你删多少次,下次再打开又出现了,简直成了强迫症和跨平台用户的噩梦。
程序员同学在使用Git/SVN等版本控制时 .DS_Store 文件经常被不小心提交到代码仓库里。每次你调整了文件夹视图(可能只是点了一下),它都可能变化,导致仓库里充斥大量与代码无关的变更记录。团队协作时,别人拉取代码也会收到这些垃圾文件,极度影响效率和仓库清洁度。

其实这还不是终极噩梦,如果你从Mac拷贝文件到NAS中,有时会发现报错:“发生意外的错误-8062”,单单只拷贝单个文件,不会报这个错误,如果拷贝一个目录,经常出现8062,你会左思右想,到底是哪里出了问题?真的觉得Apple这个设计很无趣,简单的文件拷贝居然还需要技术!是的,如果没有刷子,还真的搞不定!

很幸运,在NAS设置中仔细检查,在SMB协议中,有一个配置项设置看禁止.DS_Store文件,原来不能拷贝的原因就在这里!于是开始删除当前目录中的所有.DS_Store文件之后再复制文件,呵呵,成功了!不过想想,总觉得苹果为什么不放弃这个恼人的.DS_Store,这个坑真的很大,只能说我很幸运,是因为我碰巧去研究了一下NAS服务器上的SMB设置才偶然找到解决这个问题的办法!

分享几个规避办法:

  1. 彻底不要.DS_Store
    禁止生成:
defaults write com.apple.desktopservices DSDontWriteNetworkStores true

是否生效:
defaults read com.apple.desktopservices DSDontWriteNetworkStores
需要重新启动。

  1. 临时删除.DS_Store
    如果发生8062错误,可以考虑操作:
    删除当前目录的.DS_store 文件
find . -name '.DS_Store' -type f -delete

就可以正常拷贝文件到NAS了。

- THE END -
最后修改:2026年7月25日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论