如果你在 macOS 上接过安卓手机、微单相机,或者任何走 MTP 协议连接的便携设备,大概率会遇到这些事:插上数据线,系统没有任何反应;打开 Android File Transfer,界面简陋还经常空转;好不容易看到文件,复制几个大视频又突然中断。Moorage 这个项目最近在 Hacker News 的 Show HN 里出现,标题说得很直接——要用一种更好的方式,在 macOS 上挂载和查看 MTP 设备。这篇文章会围绕 MTP 为什么在 macOS 上难用、Moorage 这类挂载工具的定位、以及实际挂载查看时的步骤和坑点展开,适合经常用 USB 线倒照片、做自动化导入、或者被 MTP 折腾过的人。
先说结论:MTP 不是 U 盘,它没有把整个存储空间暴露给系统。macOS 本身又没有一套完整的 MTP 挂载方案,所以才会出现 Finder 不显示、复制约到一半失败、不同工具之间文件列表不一致这些现象。Moorage 想要做的,是把“挂载设备”和“查看内容”这两件事理顺,让你不再依赖某个特定的图形界面,而是能把设备当成一个卷来对待。下面按实际使用顺序拆开讲。
1. 先搞懂 MTP 设备在 macOS 上为什么挂起来这么别扭
1.1 MTP 不是 U 盘,它不暴露块设备
U 盘或者移动硬盘走的是 USB Mass Storage,系统能看到一个完整的磁盘,然后自己去读文件系统。MTP 全称是 Media Transfer Protocol,它的工作方式更像“客户端和服务端对话”:系统发请求,设备返回目录列表;系统请求某个文件,设备把文件内容传回来。目录结构、文件大小、修改时间都是通过 MTP 对象返回的,而不是通过 ext4、exFAT、APFS 这些文件系统直接读取。
这意味着什么?macOS 没法像处理硬盘一样,直接把 MTP 设备做成一个普通块设备挂载到/Volumes下,除非有中间层把 MTP 请求翻译成文件系统操作。这个中间层通常就是 FUSE 或者 libmtp 之上的封装。
理解这一点很重要。很多人插上安卓手机后,在“磁盘工具”里看不到设备,就以为是线坏了,其实不是。MTP 设备本来就不会出现在磁盘工具里,除非你的手机切换到 U 盘模式,而现在的安卓手机大多数已经不支持传统 U 盘模式了。
1.2 macOS 对 MTP 的原生支持非常有限
Windows 和 Linux 对 MTP 的支持程度不太一样。Windows 有 WPD,能把 MTP 设备挂成资源管理器里的“便携设备”。Linux 上可以通过jmtpfs这类工具,把 MTP 设备挂到某个目录。macOS 没有这样的内置机制。
在 macOS 上,如果你用系统自带的“图像捕捉”,它能识别部分相机的 PTP/MTP 传输,但主要是照片导入场景。系统本身不会把整个 MTP 设备作为一个通用卷暴露在 Finder 里。也就是说,你想浏览手机上的所有文件、复制文档、管理下载目录,系统原生方案基本帮不上忙。
1.3 现有工具要么是图形隔离层,要么依赖太碎
macOS 上常见的 MTP 工具主要有两类。
第一类是图形文件管理器,比如 Android File Transfer、OpenMTP。它们的共同点是:你只能在工具自己的窗口里看文件。如果工具不支持某种文件类型、不显示某个隐藏目录,或者设备端目录结构比较复杂,你就只能跟着工具的界面走,很难用终端脚本去批量处理。
第二类是命令行挂载工具,比如用libmtp配合 FUSE 实现的方案。这类工具更接近“挂载”的本质,但配置成本偏高。你需要安装 Homebrew、确认 FUSE 版本、处理系统扩展授权,还要接受不同项目之间的兼容性差异。设备一换,可能就得重新调试。
Moorage 想切入的正是这个空档:既能挂载,又能查看,同时尽量保持命令行工具的简单性。项目标题里的“mount and view”其实已经定义了能力边界,它不是要做成一个大而全的相册管理软件,而是先把 MTP 设备接入 macOS 这套体验做好。
1.4 为什么“拆分能力”比“全家桶”更务实
很多人一听到 MTP 工具,就期待它能自动备份、自动同步、自动清理重复文件。但一个工具如果什么功能都做,每个环节都容易出问题。尤其是 MTP 设备种类繁杂,安卓手机、微单、运动相机、车载设备,它们的协议实现并不完全一致。
Moorage 这类项目更务实的地方在于:先解决“能不能挂载”和“能不能看到文件”这两个基础问题。一旦挂载成功,后续的复制、备份、整理就可以交给 macOS 自带命令或者其他工具去做。这也意味着,我们可以用rsync、find、du这些标准命令来操作 MTP 卷,而不是被困在某个图形界面里。
2. Moorage 的定位:把 MTP 设备变成 macOS 可访问的卷
2.1 从项目标题看核心能力:mount + view
Moorage 这个项目名字里,“moorage”本身有“泊位、停靠”的意思,放在 MTP 设备上就是“把设备停靠到系统里”。标题里明确点出的两个动作是 mount 和 view:挂载 MTP 设备,查看里面的内容。
从使用方法上看,它大概率是一个命令行工具,也可能配套一个简化后的图形界面入口。具体命令和参数要看项目 README,因为这类项目在不同阶段变化很快。但你只需要掌握一个基本流程:连接设备、识别设备、创建挂载点、挂载、查看、卸载。这个流程下面会详细展开。
2.2 和 Android File Transfer、OpenMTP、jmtpfs 的差异
我用一张表来对比常见方案的差异:
| 工具 | 交互方式 | 是否真正挂载到 macOS 文件系统 | 适合人群 |
|---|---|---|---|
| Android File Transfer | 独立窗口 | 否 | 偶尔倒几张照片,能忍受旧界面 |
| OpenMTP | 独立窗口 | 否 | 需要图形界面,想同时处理多个文件 |
| jmtpfs | 命令行 + FUSE | 是 | 喜欢终端操作,能处理 FUSE 配置 |
| Moorage | 命令行为主,可能带辅助界面 | 目标上是挂载后作为卷访问 | 需要脚本化、批量导入、Finder 直接浏览的人 |
这里的关键差异是“是否真正挂载到文件系统”。如果没有真正挂载,你就只能在工具窗口里操作。如果挂载成了卷,你就可以在终端里用ls查看,用cp复制,用rsync同步,还可以在 Finder 的“前往文件夹”里输入卷路径直接打开。
2.3 为什么“先挂载,再让 Finder 去读”更稳
很多图形工具的问题在于:它们自己维护一套文件列表缓存,设备端文件发生变动时,缓存可能没刷新。结果就是你在手机上删了照片,工具里还显示;或者工具里显示的文件,复制时又报错。
挂载方案通常会实时向设备请求目录和文件信息,虽然速度不如本地文件系统,但至少不会因为工具缓存不一致导致文件列表错误。MTP 设备本身不是高速存储,走 USB 2.0 的时候尤其明显。挂载后的读取速度可能只有几十 MB/s,甚至更低,但这属于协议限制,不是工具的问题。
2.4 适合谁用,不适合谁用
适合使用 Moorage 这类工具的人:
- 经常用 USB 连接安卓手机或相机,需要把 DCIM 目录里的照片批量导入到 Mac。
- 需要在终端里处理文件,比如按日期、扩展名、文件大小筛选。
- 想把 MTP 挂载动作写进脚本,比如每天固定时间自动备份。
- 觉得多个图形工具换来换去太麻烦,希望有一个统一入口。
不建议使用这类工具的人:
- 完全不想碰终端,只想打开一个窗口点几下完成导入。
- 希望一次点击就完成“备份+去重+云同步”的全流程。
- 手里的设备主要是 iPhone,因为 iPhone 走的是 AFC 协议,不是 MTP。
3. 使用前准备:环境、依赖和手机设置
3.1 确认系统版本和芯片类型
Moorage 这类工具通常面向 macOS 12、13、14 甚至更高版本开发。安装前先确认你的系统版本,在“关于本机”里能看到。
芯片类型也要注意。如果是 Apple Silicon 的 Mac,比如 M1、M2、M3,工具需要支持原生运行,或者在 Rosetta 2 环境下运行。部分底层依赖如果没适配 arm64,就可能出现编译失败、启动崩溃、找不到库的情况。遇到这种现象,不用急着怀疑工具本身,先确认你运行的二进制是不是对应芯片架构。
3.2 安装依赖:libmtp 和 libusb
大多数 MTP 命令行工具都依赖libmtp,而libmtp底层又依赖libusb。在 macOS 上,Homebrew 是常见的安装方式:
xcode-select --install brew update brew install libmtp libusb有些项目还会要求 macFUSE 或者类似的内核扩展,这取决于实现方式。如果项目在文档里没提 FUSE,就别先装,避免引入额外权限问题。如果提示需要系统扩展授权,再去“系统设置 - 隐私与安全性”里处理。
这里要注意:依赖不是越新越好。libmtp更新频繁,个别设备和某些版本可能不兼容。如果你之前能用某个版本,升级系统或依赖后突然识别不到设备,可以尝试降回旧版。这是 MTP 场景里比较常见的坑。
3.3 手机侧:把 USB 模式调成“文件传输”
安卓手机连接电脑后,默认可能是“仅充电”。你需要下拉通知栏,找到“正在通过 USB 为连接的设备充电”的提示,点开后选择“文件传输”或“MTP”。这一步没做好,后续所有工具都识别不到设备。
如果手机开了“USB 调试”,也就是开发者模式里的选项,某些工具仍然能通过 adb 访问文件,但这不是 MTP。Moorage 这类 MTP 挂载工具要求的是 MTP/文件传输模式,不依赖 adb。
还有一个容易忽略的点:数据线。有些第三方线缆只能充电,不能传数据。判断方法很简单,连接后在终端跑一条命令:
system_profiler SPUSBDataType如果能看到手机厂商和设备名称,说明数据通路正常。如果连 USB 设备列表里都没有,后面就不用继续了。
3.4 确认设备类型和文件量
不同设备的 MTP 目录结构不一样。安卓手机通常有DCIM、Pictures、Download、Documents等目录;微单相机可能只有DCIM和MISC。挂载前先明确你要访问哪些目录,避免挂载后面对一堆看不懂的文件夹。
文件量也很重要。如果设备里的文件非常多,刚挂载时ls可能会卡几秒或几十秒,因为工具要请求整个目录索引。第一次挂载建议先ls一个小目录,比如 DCIM 下的某个子目录,确认响应速度正常,再全盘浏览。
4. 把一台 MTP 设备接进 macOS:挂载、查看、卸载的完整操作
4.1 先搞清楚工具的入口命令
由于 Moorage 还在迭代中,安装方式可能是 Homebrew、源码编译,或者 GitHub Release 直接下载。我这里给的是通用命令行操作流程。假设你把二进制放到了/usr/local/bin/moorage,那么入口就是moorage。如果实际命令不同,替换成 README 里的二进制名就行。
安装完成后,先看帮助信息:
moorage --help这一步不能省。不同版本可能使用不同的子命令,比如mount、unmount、list、info,也可能使用-m、-u这类短参数。以实际输出为准。
4.2 第一步:识别设备并创建挂载点
先把手机或相机调到 MTP 模式,用数据线连上 Mac,然后确认设备能被底层识别:
mtp-detect这条命令来自 libmtp,如果设备识别成功,会输出设备厂商、型号、MTP 扩展支持等信息。如果mtp-detect找不到设备,先回到 USB 线和手机模式的问题上排查。
接下来创建挂载目录:
mkdir -p /Volumes/Moorage-Device01为什么要手动创建?因为 MTP 不是即插即用的 U 盘,系统不会自动分配卷名。给工具一个明确的挂载点,后面的访问路径才会稳定。
4.3 第二步:执行挂载命令
挂载命令大概是这样:
moorage mount /Volumes/Moorage-Device01也有可能项目用moorage mount --device 001 --mountpoint /Volumes/Moorage-Device01这样的形式。参数结构不重要,重要的是理解动作:工具会通过 MTP 协议连接设备,把设备内容映射到/Volumes/Moorage-Device01这个目录下。
挂载成功与否,看命令有没有明确提示,也可能要看退出码。如果没有任何报错,但光标一直不动,说明正在初始化目录,可以多等一会儿。
4.4 第三步:验证挂载结果并用 Finder 查看
挂载完成后,先用终端验证:
mount | grep Moorage df -h /Volumes/Moorage-Device01 ls -la /Volumes/Moorage-Device01ls能看到设备里的顶层目录,说明挂载已经生效。这时候在 Finder 里按下Cmd + Shift + G,输入:
/Volumes/Moorage-Device01回车就能直接打开。
如果 Finder 边栏里没有显示这个卷,也不用着急。Finder 的边栏“位置”区域需要系统识别到卷设备,MTP 是通过第三方挂载的,不一定自动出现在边栏。你可以把它拖到边栏里,或者每次用“前往文件夹”访问。
4.5 第四步:查看和复制文件
挂载后,你可以像操作普通目录一样浏览。比如说,查看 DCIM 目录下的照片:
ls -lh /Volumes/Moorage-Device01/DCIM/然后用 Finder 或者cp命令复制。比如把照片全部复制到本地:
cp -R /Volumes/Moorage-Device01/DCIM/ ~/Desktop/PhonePhotos/这里要提醒一句:MTP 列表里的目录路径是虚拟的,不是设备真实文件系统路径。有些文件可能因为设备端状态问题,在列表里能看到,但读取时出错。遇到复制失败,不要直接判定工具坏了,先试着复制单个文件。
4.6 第五步:正确卸载
复制完成后,不能直接拔线。先卸载挂载点:
moorage umount /Volumes/Moorage-Device01如果不确定命令,也可以使用diskutil:
diskutil unmount /Volumes/Moorage-Device01卸载成功的标志是ls /Volumes/Moorage-Device01已经不存在或者报错。然后你可以在移动设备上点击“断开连接”,再拔掉数据线。
注意:不要在挂载状态中直接拔线。MTP 设备端可能还有未完成的文件操作,强制断开容易出现目录损坏,下次挂载时列表异常。
5. 批量导入照片和视频:从能挂载到能干活
5.1 先摸清设备目录结构
批量导入前,先看看设备里有哪些顶层目录:
ls -la /Volumes/Moorage-Device01/常见的有这些:
| 目录名 | 常见内容 |
|---|---|
| DCIM | 相机拍摄的照片、视频 |
| Pictures | 截图、微信保存的图片 |
| Download | 浏览器下载文件 |
| Documents | 文档类文件 |
| Movies | 视频文件 |
不同手机品牌和 Android 版本目录会有差异,不要想当然。先ls一遍再动手。
5.2 用 rsync 而不是 Finder 拖拽
Finder 拖拽适合少量文件,但批量复制时看不到进度细节,失败也难定位。我更推荐用rsync,特别是要复制几百个文件时:
rsync -av --progress --partial \ /Volumes/Moorage-Device01/DCIM/ \ ~/Pictures/Phone-20250512/参数含义:
-a:归档模式,保留文件属性。-v:显示复制过程。--progress:显示每个文件的传输进度。--partial:传输中断时保留目标端已下载的部分,下次继续。
MTP 设备读取文件本身不稳定,--partial能减少重复下载同一个大文件的浪费。
5.3 并发和重试的判断
不要开着几个终端窗口同时对同一台 MTP 设备复制文件。设备端存储通常是闪存芯片,串行处理能力有限。多路并发读请求会让设备端忙乱,出现复制速度下降、文件损坏、突然断开连接等问题。
如果某个文件复制失败,先确认目标目录里有没有残留文件。删除残缺文件后,再单独复制那一个:
cp /Volumes/Moorage-Device01/DCIM/100ANDRO/IMG_0001.jpg ~/Pictures/Phone-20250512/如果单文件复制也失败,大概率是设备端文件本身有问题,不是工具问题。
5.4 重复文件检查
批量导入后,需要确认文件是否完整。我一般会先对比数量和总大小:
find ~/Pictures/Phone-20250512 -type f | wc -l du -sh ~/Pictures/Phone-20250512然后随机抽几个文件用哈希校验:
shasum -a 256 /Volumes/Moorage-Device01/DCIM/100ANDRO/IMG_0001.jpg shasum -a 256 ~/Pictures/Phone-20250512/IMG_0001.jpg如果两次哈希一致,说明复制完整。MTP 传输过程可能因为设备端缓存没有写完导致文件损坏,哈希校验虽然麻烦,但比事后发现照片打不开要省心。
6. 常见报错和排查顺序
6.1 “无法访问卷”或者挂载点不存在
出现这个提示,先不要怀疑挂载命令。按这个顺序排查:
- 设备有没有进入 MTP 模式。
- 数据线是不是只能充电。
- 系统能不能通过
system_profiler SPUSBDataType看到设备。 - 挂载目录有没有创建。
- 上次是不是没有正确卸载,导致挂载点残留。
其中“挂载点残留”很常见。设备断开了,但/Volumes/Moorage-Device01目录还在,再次挂载时工具会认为卷忙。先卸载旧挂载再挂载:
diskutil unmount /Volumes/Moorage-Device01 2>/dev/null rm -rf /Volumes/Moorage-Device01 mkdir -p /Volumes/Moorage-Device016.2 权限不足,Permission denied
挂载点建在/Volumes下通常权限就够了。如果建在其他目录,比如/media,macOS 上不存在这个路径,你需要先创建并确认写权限。有个报错叫error creating mount point /media/mtp: Permission denied,这类问题在 Linux 上更常见,但 macOS 下工具如果要求挂载到受 SIP 保护的目录,也会出现类似错误。建议统一使用/Volumes下的目录,避免折腾权限。
另外,如果工具依赖 FUSE 或者内核扩展,macOS 会拦截没有经过批准的扩展。你需要在“系统设置 - 隐私与安全性”里允许加载。如果用的是 Apple Silicon,还可能需要降低安全策略,但一般开发环境没必要改,除非你只是学习测试。
6.3 挂载成功但 Finder 不显示
先在终端里查看:
ls -la /Volumes/Moorage-Device01如果能看到文件,但 Finder 里没有,多半是 Finder 没有刷新卷列表。解决办法是用“前往文件夹”直接输入路径,或者用open /Volumes/Moorage-Device01命令打开单独窗口。找不找得到比边栏显示更重要,文件能读就行。
6.4 复制到一半卡住或者“Cannot access volume”
这个现象遇到得最多。设备端目录能列出来,但复制大文件时卡住,然后提示无法访问卷。原因通常是:
- 手机锁屏后进入了低功耗状态。
- USB 控制器出于省电策略挂起。
- 线缆传输质量差,导致大量数据重传。
- MTP 协议层面某个文件返回数据异常。
排查时先让设备保持亮屏,把自动锁屏时间拉长,或者直接插着电源。然后把线换到 Mac 机身上的直连口,不要用扩展坞。如果问题还出现,就改用“单个文件复制”的方式,定位到底是所有文件失败,还是特定文件失败。
6.5 设备反复消失
设备在挂载过程中突然从系统里消失,退出了 MTP 模式。这可能是因为你手动切换了手机通知栏里的 USB 模式,也可能是因为数据线触点松动。重启手机后重新连接,把手机端 USB 模式固定为“文件传输”,不要再去点其他选项。
如果多次复现,还可以查一下系统日志:
log show --last 5m --predicate 'eventMessage contains "USB"'日志能告诉你设备是在 USB 层断掉,还是 MTP 协议层报错。这个步骤能帮你判断是线的问题还是工具的问题。
6.6 通用排查顺序
记一个简单的排查清单,遇到问题照着走:
- 看现象:报错、卡住、没有输出、文件列表为空。
- 看物理层:线缆、接口、设备是否亮屏。
- 看 USB 列表:
system_profiler SPUSBDataType。 - 看依赖:libmtp、libusb 是否安装,版本是否兼容。
- 看挂载点:目录是否存在,是否被旧挂载占用。
- 看工具输出:有没有具体错误码。
- 看项目版本:是不是已知问题,发布页有没有处理方案。
建议:不要跳过第 2 和第 3 步直接改工具参数。MTP 场景里,很大比例的问题出在物理连接和手机端模式,而不是软件本身。
7. 把 MTP 挂载流程自动化:launchd、Automator 和脚本
7.1 脚本化的前提
把 MTP 挂载变成脚本的前提是:挂载命令稳定,卸载命令稳定,设备端目录结构你已经提前摸清楚。不要在第一台设备还没跑通的情况下,就直接写全自动备份脚本。自动化只能放大一个已经可用的流程,不能弥补流程本身的不稳定。
7.2 用一段简单的备份脚本
假设你已经挂载到/Volumes/Moorage-Device01,备份脚本可以这样写:
#!/bin/bash MOUNT_POINT="/Volumes/Moorage-Device01" PHONE_DIR="$MOUNT_POINT/DCIM/" BACKUP_DIR="$HOME/Pictures/PhoneBackup/$(date +%Y%m%d)" if [ ! -d "$MOUNT_POINT" ]; then echo "挂载点不存在,先执行挂载" moorage mount "$MOUNT_POINT" fi mkdir -p "$BACKUP_DIR" rsync -av --progress --partial "$PHONE_DIR" "$BACKUP_DIR/" moorage umount "$MOUNT_POINT"这段脚本的逻辑很直接:先检查挂载点,没有就挂载;然后创建带日期的备份目录;用 rsync 复制;最后卸载并记录日志。
脚本里一定要加日志:
echo "$(date) backup done" >> "$HOME/Library/Logs/moorage-backup.log"没有日志,自动化脚本出问题时你只能干瞪眼。
7.3 launchd 定时任务
如果希望每天某个时间自动执行备份,可以用 launchd。写一个 plist 文件,放到~/Library/LaunchAgents/:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.example.mooragebackup</string> <key>ProgramArguments</key> <array> <string>/Users/你的用户名/bin/moorage-backup.sh</string> </array> <key>StartCalendarInterval</key> <dict> <key>Hour</key> <integer>22</integer> <key>Minute</key> <integer>0</integer> </dict> </dict> </plist>然后加载任务:
launchctl load ~/Library/LaunchAgents/com.example.mooragebackup.plist注意,定时任务不会帮你自动连接设备。如果设备没有插在电脑上,脚本应该安全退出,而不是报错中断。这就是为什么脚本开头要检查挂载点是否存在。
MTP 设备插入这个事件,launchd 监听起来比较麻烦,没有统一的WatchPaths能覆盖所有 MTP 挂载。所以更稳妥的做法是:你手动插上设备后,再运行脚本,或者在桌面放一个快捷方式,连接后双击运行。
7.4 用 Automator 做菜单级操作
如果你更喜欢图形入口,可以建一个 Automator 应用:
- 打开 Automator,选择“快速操作”。
- 工作流程收到当前选中的文件或文件夹,不限制服务。
- 添加“运行 Shell 脚本”操作。
- 在脚本里调用上面的备份脚本。
这样你就能在 Finder 里右键点击某个目录,直接把 MTP 设备里的照片同步进来。
7.5 自动化的风险控制
自动脚本不要加入删除设备文件的操作。虽然备份完成后你可能会想“清空手机空间”,但这一步风险极高。一旦目录匹配错误,你的照片都没了,而备份还没验证完整。
自动化脚本只做只读复制,不做删除。如果确实需要清空设备,等备份目录校验完成后再手动在手机上操作。
8. 什么时候不用 MTP 挂载:边界和替代方案
8.1 想完整备份手机存储,优先考虑 adb pull
如果你的手机开启了开发者选项和 USB 调试,那么备份整个存储空间更适合用adb pull,而不是 MTP。因为 adb 走的是 Android 调试桥,文件读取路径更直接,遇到特殊文件时的稳定性通常比 MTP 好。
adb pull /sdcard/DCIM ~/Desktop/FullBackup不过你要清楚:adb和 MTP 是两套协议。Moorage 解决的是 MTP 设备挂载,不能拿来和 adb 画等号。如果在意“全量备份”,可以先装 Android 官方 platform-tools,然后走 adb 路线。
8.2 临时传一两个文件,未必用挂载
如果只是临时把一张 PDF 从手机传到 Mac,AirDrop 或者微信文件传输助手可能更快。挂载 MTP 设备需要连接、识别、挂载、卸载一套流程,反而显得繁琐。Moorage 这类工具更适合“有批量导入需求、要做脚本化处理、不想频繁使用其他软件”的场景。
8.3 老相机和嵌入式设备不要抱太高期待
很多相机厂商的 MTP 实现并不是完全合规。它们可能只实现了最基本的目录枚举和文件读取,其他扩展字段会返回错误。你可能会遇到:挂载成功了,但是文件列表里看不到 RAW 文件;或者能看到缩略图,复制原图时设备返回不支持。
遇到这种情况,先查设备的说明书,看它是否支持“电脑传输模式”,也可以试试厂商自带的软件。如果厂商软件正常,说明设备没问题,是通用 MTP 工具兼容性有限。
8.4 我的使用建议
如果你只是偶尔传照片给 Mac,Moorage 对你来说可能有点重。但如果你经常在多个 MTP 设备之间来回导数据,或者有自己的备份目录体系,那么把这套挂载方式跑通,后面会省事很多。
建议的落地路线:
- 先用
mtp-detect确认设备能被 libmtp 识别。 - 跑通一次“挂载、查看、复制单文件、卸载”的最小流程。
- 确认能稳定读取照片和视频后,写一段 rsync 备份脚本。
- 最后再考虑 launchd 定时任务和 Finder 快捷操作。
MTP 在 macOS 上本身就是一个摩擦点。Moorage 的标题给出了一个务实的思路:先把“挂载”和“查看”做好,其他复制、备份、整理就交给更成熟的工具。别指望一个工具把所有事都做完,先把最基础的挂载链路跑顺,比什么都重要。 当