Watch at Ease看见世界,读懂生活。

科技 · 实用指南

Mac 的 rsync 报 Operation not permitted?先对上失败路径与启动者

代码 23 只是部分传输失败摘要。先区分源端读取、目标端写入与元数据变更,再核真实终端、SSH 或定时任务环境,避免乱改权限。

rsync 操作、路径和元数据失败的原创排查图。
原创编辑插画:区分路径访问、目标变更和元数据错误。 Watch at Ease

rsync 最后显示代码 23,不能单凭它确定哪项权限失败。此前的操作和路径才是关键:打开源目录、重命名目标文件、设置时间戳不是同一动作。在 Mac 上,终端手动运行成功也不能证明定时任务或远端 SSH 进程拥有同样的隐私访问。

从真实日志建立失败清单

逐条记录操作、完整路径、源或目标角色、电脑与进程环境。opendir 涉及目录访问;failed to open 要结合完整信息与标志判断读写,路径可能属于任一端;rename、chown、chgrp、failed to set times 对应不同目标能力。文件内容已复制,也可能仍有元数据失败。

保存完整 stderr 和 rsync 退出码,而不是只看外层脚本的成功消息。在实际任务环境分别记录 command -v rsync、rsync --version、id、pwd。只收这些诊断值与脱敏参数,不发布可能含凭据的整个环境。换新版 rsync 本身不能授权受保护文件夹。

定位启动者和需要权限的一端

本地交互任务要确认实际终端应用;定时任务则记录启动应用或服务、用户、工作目录和挂载路径,不能假设继承交互终端设置和授权。手动成功只是对照结果,不是定时环境已修复。

SSH 传输中的远端 rsync 使用远端登录用户身份。如果拒绝路径属于远端 Mac,只改本地 Terminal 授权不能证明远端有权访问。还应区分 SSH 与另有模块权限的 rsync daemon;不要只凭 sender/receiver 标签判断,先对应路径所在电脑。

只处理证据对应的受支持访问设置

苹果说明可在系统设置→隐私与安全性→文件与文件夹,逐应用、逐位置控制访问。核实际应用的列表,仅授予复制任务所需访问。对于远端登录,苹果另列通用→共享→远程登录,含可选的允许远程用户完全访问磁盘及允许登录用户清单。

远端完全磁盘访问是较广授权,不是每个代码 23 都必须开启。受管 Mac 无法修改或找不到负责应用时,把失败清单交管理员。不要禁用系统保护、改隐私数据库或递归改所有权来补偿。普通文件权限、目标文件系统能力及请求的元数据仍需分别诊断。

在同一环境验证,不删除唯一副本

核已装版本支持的参数后,对小范围执行带 itemized changes 的 dry run。手册说明预演不发送实际数据,因此无错误预览不能证明全部源读取、目标写入或元数据设置成功。之后用可丢弃样本,经相同启动者和远端路径做一次不删除源目标的真实复制。

比较样本字节与备份要求的元数据,再运行计划中的受控任务并检查完整日志和退出码。时间戳或所有权仍失败时,不能因文件能打开就称完整归档。保留原件和有效备份,不加删除或忽略错误参数掩盖问题。本文未测试读者的 Mac,也不承诺统一隐私修复。

匹配 rsync 启动环境并验证的原创流程图。
原创编辑插画:核执行环境,再验证真实样本复制。 Watch at Ease