You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新Mac上rsync增量备份脚本失效,请求故障排查

新Mac上rsync增量备份脚本故障排查

问题分析

从报错信息(command not found、invalid option namet: errexit)来看,核心问题有两个:

  1. 脚本使用了Windows风格的CRLF换行符,而非Unix标准LF换行符,导致bash无法正确解析命令语法
  2. 脚本中BACKUP_DIR是占位符,未替换为外接硬盘的实际挂载路径

解决步骤

1. 修复换行符格式

macOS(Unix系统)仅识别LF换行,若脚本是从Windows环境复制、或用Windows编辑器编辑过,会带有CRLF换行,需转换为LF:

  • 方法一:用dos2unix工具转换(先通过Homebrew安装:brew install dos2unix,再执行)
    dos2unix your-backup-script.sh
    
  • 方法二:用sed命令直接移除每行末尾的回车符
    sed -i '' 's/\r$//' your-backup-script.sh
    
  • 方法三:用文本编辑器修改(如VS Code、Sublime Text):打开脚本后,将右下角的换行符设置从CRLF改为LF,保存即可

2. 替换备份路径占位符

将脚本中的readonly BACKUP_DIR="link to folder in external drive"替换为外接硬盘的实际路径:

  • 打开访达,找到外接硬盘,右键选择「显示简介」,查看「位置」字段(例:/Volumes/MyExternalDrive/BackupFolder)
  • 修改脚本对应行:
    readonly BACKUP_DIR="/Volumes/MyExternalDrive/BackupFolder"
    

3. 确保脚本拥有执行权限

执行以下命令给脚本添加可执行权限:

chmod +x your-backup-script.sh

错误原因说明

  • 带有CRLF换行的脚本,每行末尾的\r(回车符)会被bash当作命令的一部分解析,比如set -o errexit\r会被识别为无效选项errexit\r,从而触发invalid option namet: errexit错误
  • 空行中的\r会被bash当作空命令执行,导致出现command not found报错

内容的提问来源于stack exchange,提问作者InflatableGull

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:45:33