游戏
morning
不用改签名,给 Mac 微信聊天记录「搬个家」
摘要
Matrix 首页推荐 Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。 文章代表作者个人观点,少数派仅对标题和排版略作修改。 AI 辅助创作声明: 本文写作过程中使用 AI 辅助核对技术思路、整理命令和润色文字。文章结构、操作步骤与结论均由作者撰写和审阅;涉及微信的关键步骤由作者...
App
APFS
Mac
UUID
xwechat_files
Data
Matrix
Store
Documents
WeChatData
2026-08-13
1 阅读
约10分钟阅读
wclebb
字号:
Matrix 首页推荐 Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。 文章代表作者个人观点,少数派仅对标题和排版略作修改。 AI 辅助创作声明: 本文写作过程中使用 AI 辅助核对技术思路、整理命令和润色文字。文章结构、操作步骤与结论均由作者撰写和审阅;涉及微信的关键步骤由作者在文末所列环境中实际测试。题图由 AI 生成。 阅前须知: 本文方案保留 Mac App Store 微信的官方签名,不需要执行 codesign 操作重新签名 这不是普通的文件搬家操作 本文会修改 APFS 宗卷的挂载位置和 /etc/fstab ,填写错误的设备标识符、UUID 或路径,可能导致微信找不到聊天记录或丢失聊天记录 开始前请退出微信, 并至少保留一份可用备份 本文介绍的方法亦可用于其它 App 或游戏,实现空间扩容的效果 我的 Mac mini「丐中丐」版本只有 256 GB 存储空间,但微信聊天记录的占用空间却会随着图片、视频和文件不断增长。按照传统思路把数据目录改成符号链接看似简单,但 Mac App Store 版微信运行在 App Sandbox 中,系统会解析链接的真实目标,指向外置硬盘的符号链接并不会自动获得访问权限。 一种常见做法 是用 codesign 给微信重新签名,再授权它访问外置硬盘。这个方案有用,但会改变 App 原有的签名状态,每次更新后都可能需要重新操作。我更希望保留 Mac App Store 版本的官方签名。 于是我在想有没有一种更好的方案, 比如创建一个独立的 APFS 宗卷,并把它直接挂载到微信容器内的聊天数据目录 ——如此一来,对微信来说它仍在访问自己的 xwechat_files ,但对 macOS 来说,这个目录实际上又是外置硬盘上的一个宗卷。 整个过程不修改微信 App,也不需要预先切出固定大小的传统分区,更适合以下情况: 微信聊天记录占用了大量内置存储 外置硬盘通常会长期连接 Mac 外置硬盘已经采用 APFS 格式 如果你经常拔掉外置硬盘、需要随时带着 Mac 离开,或者不熟悉备份与恢复操作,那么定期导出聊天记录通常更稳妥。 另外,本文迁移的是微信的工作数据,不等同于备份 。外置硬盘损坏后,数据仍可能丢失,因此还要另行保留备份。 原理 我们上面提到的「符号链接」,其实只是一个指向其他位置的路径。微信通过它访问外置硬盘时,App Sandbox 看到的仍是未经授权的外部路径。 挂载则不同。macOS 会把整个 APFS 宗卷接入微信容器内部的 xwechat_files 目录,即便底层存储位置其实是外置硬盘,微信看到的路径是没变的。 不过挂载点不能随意上移。在我的测试中,将宗卷挂载到微信容器的 Data 或 Data/Documents 都会触发容器完整性检查,导致微信运行崩溃。 只有挂载到更深一层的 Data/Documents/xwechat_files 才能正常运行。 第一步:创建 APFS 宗卷 打开「磁盘工具」,选中准备用来存放微信数据的外置 APFS 容器,然后点击工具栏中的「添加宗卷」。 建议使用以下设置: 名称: WeChatData 格式:APFS,不区分大小写 保留大小:留空 配额:留空,或者根据需要设置 APFS 宗卷会共享所在容器的可用空间,因此无须像传统分区那样预先划定固定容量。 创建完成后,打开「终端」,查看宗卷信息: diskutil info "/Volumes/WeChatData" | grep -E 'Device Identifier|Volume Name|Mount Point|Disk / Partition UUID' 你会看到类似 disk7s2 的设备标识符,以及一串宗卷 UUID。把它们记下来。 (不记也没关系,后面也会用到) 注意:后文中的 disk7s2 、宗卷 UUID、用户名和路径都只是示例,必须替换为你自己的实际值。设备标识符在重新连接硬盘后可能变化,因此自动挂载应使用 UUID。 第二步:复制微信聊天数据 这里有两种方法,一种是复制粘贴法,另外一种则是通过终端。 复制粘贴: 完全退出微信,然后 command+shift+G 在 Finder 中中前往: ~/Library/Containers/com.tencent.xinWeChat/Data/Documents/xwechat_files/ 将 xwechat_files 目录里面的全部内容复制到 WeChatData 宗卷根目录。 复制完成后,宗卷根目录应该直接出现 all_users 、 Backup 、 用户名_… 等目录,而不是再多嵌套一层 xwechat_files 。 终端: 继续保持微信退出,使用 macOS 自带的 ditto 保留目录结构和扩展属性: SRC="$HOME/Library/Containers/com.tencent.xinWeChat/Data/Documents/xwechat_files" DST="/Volumes/WeChatData" ditto --rsrc --extattr "$SRC" "$DST" du -sh "$SRC" "$DST" find "$SRC" -type f 2>/dev/null | wc -l find "$DST" -type f 2>/dev/null | wc -l 无论哪一种方法,都需要检查文件数量和占用空间大致一致后,把 Mac 上原来的 xwechat_files 重命名为 xwechat_files-backup 。注意不要立即删除这个备份!确认微信稳定运行一段时间,并且另有完整备份后再处理。 第三步:把宗卷挂载到微信数据目录 原来的 xwechat_files 已经改名为 xwechat_files-backup ,因此先重新创建一个空目录作为挂载点,你可以直接在 xwechat_files-backup 当前目录新建 xwechat_files : mkdir "$HOME/Library/Containers/com.tencent.xinWeChat/Data/Documents/xwechat_files" 然后卸载新宗卷,再把它挂载到这个目录。请将 disk7s2 换成自己的设备标识符: diskutil unmount disk7s2 diskutil mount -mountPoint "$HOME/Library/Containers/com.tencent.xinWeChat/Data/Documents/xwechat_files" disk7s2 检查挂载结果: diskutil info disk7s2 | grep -E 'Mounted|Mount Point|Volume Name' 输出中的 Mount Point 应该准确指向: /Users/你的用户名/Library/Containers/com.tencent.xinWeChat/Data/Documents/xwechat_fi
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱