新Mac上rsync增量备份脚本失效,请求故障排查
新Mac上rsync增量备份脚本故障排查
问题分析
从报错信息(command not found、invalid option namet: errexit)来看,核心问题有两个:
- 脚本使用了Windows风格的CRLF换行符,而非Unix标准LF换行符,导致bash无法正确解析命令语法
- 脚本中
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
相关产品推荐
相关产品推荐

