MacBook远程SMB登陆访问导致生成.DS_Store隐藏文件

.DS_Store是什么

确认文件内容是否正确时,发现了一个未曾见过的神秘文件”.DS_Store“。
此文件名前缀带了”.“,据此推测这应该是一个隐藏文件。
在「访达」里显示一个隐藏文件不是难题,于是她同时按住Macbook快捷键Command+Shift+。成功显示隐藏文件。但是,依然看不见这个文件!
那么,这个神秘的文件”.DS_Store“究竟是何方神圣?
为什么苹果要极力隐藏它,即使在”显示隐藏文件“模式下依然不可见?
让我们继续往下看。
.DS_Store 文件究竟是什么?
DS_Store,英文全称是 Desktop Services Store(桌面服务存储),开头的 DS 是 Desktop Services(桌面服务) 的缩写。它是一种由macOS系统自动创建的隐藏文件,存在于每一个用「访达」打开过的文件夹下面。
虽然不能在「访达」中直接看到它,但是通过「终端」App,可以输入ls -la命令列出。同时,通过file命令,可以显示出其文件类型,即”Desktop Services Store“。
「终端」可以看到.DS_Store文件
DS_Store 文件的主要作用,是存储当前文件夹在桌面显示相关方面的一些自定义属性,包括文件图标的位置、文件夹上次打开时窗口的大小、展现形式和位置等。这有助于保留为特定文件夹配置的设置,例如,将桌面文件夹设置为查看按名称排序的图标,同时将下载文件夹配置为将文件显示为列表并按日期排序,最近修改的先显示。
后来,苹果又往里面加入了一些和文件注释相关的自定义信息。(这部分注释信息在最新的macOS中,同时被存储在文件自身的扩展文件属性中,这里仅作为了备份)
使用Hex Fiend查看.DS_Store文件里面存储了和右击文件「显示简介」中我写的注释一样的内容
DS_Store 文件被苹果作为底层数据隐藏在系统中,不期望用户接触到。它存储的元数据仅仅被「访达」用于文件夹的自定义显示。它不会占用太多的存储空间,所以不用过于担心。
能否阻止 DS_Store 文件的自动生成?
DS_Store 文件是由系统自动创建的,它的存在有时候会对某些场景下的用户体验产生一些负面的影响。

阻止生成方案

为了加快网络磁盘的浏览速度,苹果提供了针对通过SMB共享的网络磁盘上DS_Store文件的阻止生成方案:

  1. 在「访达」中打开「应用程序」 > 「实用工具」 > 「终端」。
  2. 输入以下命令:
    defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
  3. 然后退出登录 macOS 账户并重新登录。
    要重新启用,请输入以下命令:
    defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool FALSE
    但是,以上命令只是针对网络磁盘,想要阻止本地磁盘中 DS_Store 文件的自动生成?
    唯一的方式就是停止使用「访达」,不过我想大家应该不会考虑这么做。

如何删除DS_Store文件

何时要删除 DS_Store 文件?
既然 DS_Store 文件不会占用太大的磁盘空间,又对文件夹的显示有帮助,那为什么我们有时候还要删除它呢?下面是一些可能的原因:
你想要重置「访达」中文件夹自定义显示的方式,或者由于原有 DS_Store 文件损坏造成「访达」访问文件夹出现无法调整视图样式、无法查看或排序图标等错误。
当你在 macOS 与电脑之间拷贝或传输文件的时候,DS_Store 文件会默认被包含在内,可能会引起一些不必要的问题。而且,由于其他PC操作系统或软件不认识这个文件,在传输文件时,DS_Store 文件会显现出来,正如文章开头小伙伴给我发压缩包时,因为不熟悉 macOS 系统中这个文件是什么而出现疑虑。

如何删除 DS_Store 文件?
首先,要声明的一点是,删除 DS_Store 文件完全是安全的操作,它不会损害电脑,也不会造成个人数据丢失。删除后,「访达」在打开文件夹是会以默认显示模式显示文件夹。在你进行某些「访达」操作后,系统又会在后台自动创建 DS_Store 文件。
如果你想删除 DS_Store 文件,可以通过「终端」App 进行删除。
在「访达」中打开「应用程序」> 「实用工具」 > 「终端」。
定位到你要删除 .DS_Store 文件的文件夹目录下。
在「终端」里输入cd命令,跟上你的目录文件夹路径,例如: cd /Users/username/pictures
回车。
输入命令 find . -name '.DS_Store' -type f -delete
再次回车。
到这里,当前文件夹目录下的所有 .DS_Store 文件都会消失。
某些情况下的 DS_Store 文件忽略方案
删除操作有些麻烦,而且有时候在某些情况下,我们并不一定要通过删除才能解决 DS_Store 文件带来的问题。
在我平时的工作中,经常遇到的情况就有两种:
在压缩文件夹时不想把 DS_Store 文件带进压缩包。
在使用版本控制Git管理代码仓库文件夹时,不想把 DS_Store 文件带入仓库。
(如果有同学有其他情况下的解决方案,欢迎留下评论。)
下面我就介绍一下,如果在不删除 DS_Store 文件的条件下,解决上面两种情况下的需求:
使用某些第三方压缩软件压缩文件夹
这里我使用一款叫做 Keka 的解压缩软件,在它的偏好设置中,勾选“排除 Mac 资源文件(例如:.DS_Store)”。
然后,使用它来压缩文件夹时,它会自动忽略 DS_Store 文件。再次浏览压缩后的压缩包,再也看不到 DS_Store 文件了。
Git仓库管理忽略 DS_Store 文件
作为一名使用Mac的开发者,在日常开发过程中,经常会使用Git来对代码文件夹进行版本控制。而在默认情况下,Git会把 DS_Store 文件带入版本控制的范围内。所以,可以手动将其踏入 Git 的版本管理忽略列表。

  1. 将 . DS_Store 加入全局的 .gitignore 文件,执行命令:
    echo .DS_Store >> ~/.gitignore_global
  2. 将这个全局的 .gitignore 文件加入Git的全局config文件中,执行命令:
    git config --global core.excludesfile ~/.gitignore_global
    哦了,. DS_Store 再也不会出现在你项目的Git代码仓库中了!

总结

DS_Store 是系统自动创建的,存储「访达」打开文件夹时自动显示方式的首选项,以便文件夹以创建者预期的方式显示。
苹果没有提供完全阻止本地磁盘生成 DS_Store 文件的办法。
可以通过「终端」里输入命令行的方式删除它,不会造成任何电脑损害。但是删除后,只要继续使用「访达」,它有会在背后默默自动创建,所以无法也没必要”赶尽杀绝“。
在压缩文件或Git版本管理中,可以通过第三方软件Keka或修改Git配置项来自动忽略 DS_Store 文件。
最后,期望苹果在将来的系统更新中,能够更换这类文件数据的存储方式,不要再自动给用户的目录添加看不到的文件了。

Guess you like

Origin blog.csdn.net/adreammaker/article/details/130351321