好的,所以我通常在 stackoverflow 上,并且我承认,当涉及到更多系统管理内容时,我有点不熟悉。
在我更新到 catalina 之前,我有一个自己编写的 rsync 脚本,运行良好。基本上,我编写了一个 bash 脚本,它会将列入白名单的硬盘复制到我大楼后面的 NAS 中。
自更新至 Catalina 以来
我收到以下错误rsync: failed to open log-file nas-log: Read-only file system (30)
所以这听起来像是权限错误,但有几件事我不明白。该脚本是从 launchcontrol 运行的,本质上是 launchctl?它被视为“全局守护进程”,所以我真的不知道是我的用户在运行这个脚本,还是 root 在尝试,我甚至不知道如何查看。
为了让这个脚本再次工作,我该如何修复权限以避免此错误。我已经授予 sh 填充磁盘访问权限(根据 catalina 的更新要求)
作为参考,这是我的 bash 脚本所做的
if [ -d /Volumes/Seville ]
then
echo "Detected Seville... Beginning Rsync"
rsync -az /Volumes/Seville rsync://[email protected]:873/rsync --log-file=nas-log --out-format="%t %f %b %n"
echo "Rsync Complete ...Mailing Logs For Details"
ruby /Users/$nasDir/Library/Scripts/mail.rb [email protected] Seville
rm nas-log
fi
...#more drives
因此,它基本上会创建一个日志,通过电子邮件将其发送给用户,然后删除该日志,以便在下次运行脚本时保持最新状态。我对此很满意,我不需要将这些日志长期存储在任何地方。提前感谢您,我非常感谢您的帮助!
答案1
Catalina 的系统卷以只读方式挂载(根据[1]),您的脚本可能正在某个目录(在/
?)上创建该文件,而该目录现在以只读方式挂载。
我不确定 Catalina 在哪个目录上运行 rsync 命令(您可以回显 $PWD),但考虑到它无法nas-log
在那里创建文件,解决方案似乎很简单:使用完整路径。您可以使用/Users/$nasDir/nas-log
,或者/tmp/nas-log