禁止 macOS 在共享目录生成 ._ 隐藏文件

✍🏻 前言

在 macOS 系统中,当文件被复制到共享目录(Samba)或外部存储设备(如 U 盘、网络硬盘)时,系统会自动生成以 ._ 开头的隐藏文件(例如 ._filename.DS_Store)。

这些文件用于存储文件的扩展属性(如自定义图标、标签等元数据),但对非 macOS 用户而言,这些文件可能造成干扰。

本文将提供两种简单有效的方法,帮助您禁止生成此类文件清理已存在的冗余文件

🎯 适用场景

  • 多设备混合使用的共享目录(macOS + Windows/Linux)
  • 存储媒体文件(图片、视频)时避免元数据污染
  • 文件需经常上传至云盘、服务器等第三方平台

✅ 步骤一:通过终端命令禁用元数据文件生成

  1. 禁用 .DS_Store 文件(网络存储),打开终端运行以下命令:
1
defaults write com.apple.desktopservices DSDontWriteNetworkStores true

说明:.DS_Store 文件用于存储文件夹视图设置,此命令可避免在网络共享目录中创建它。

  1. 禁用 ._ 扩展属性文件
1
defaults write com.apple.metadata mdwriter.apple.com\ Documents\ -\All\ Users\ Localized\ Names false

说明:关闭元数据写入(部分),避免生成 ._ 文件。

  1. 重启 Finder 使设置生效
1
killall Finder

🧹 步骤二:清理已存在的 ._ 文件

  1. 批量清理

目录中已有大量 ._ 文件,可用以下命令批量清理:

1
2
3
4
# 进入共享目录
cd /path/to/shared/directory
find . -type f -name "._*" -delete
find . -type f -name ".DS_Store" -delete

📁 步骤三:服务端禁用隐藏文件

因为执行以上命令后,发现._文件还是可能会创建出来,.DS_Store倒是彻底不会创建了,所以这里还需要在samba服务端禁用该文件。

编辑 /etc/samba/smb.conf 配置文件:

1
2
3
4
5
6
7
[lu-share]
# 定义要禁止显示和操作的文件模式(支持通配符)
veto files = /._*/.DS_Store/
# 自动删除 veto 文件(当用户尝试删除时)
delete veto files = yes
# 可选:同时隐藏这些文件(即使 veto 未生效)
hide files = /._*/.DS_Store/

⚠️ 注意事项

❗功能影响:

禁用元数据文件后,可能影响以下功能:

  • 文件的自定义图标、颜色标记
  • 标签信息
  • 某些专业软件(如 Adobe 系列)可能依赖元数据

✅ 建议

若该共享目录仅供 Windows / Linux 访问或存储使用,禁用此类文件是合理的。

若需要在 macOS 设备间共享,建议保留元数据功能。