我有以下 Big Sur Mac OS 脚本:
#!/bin/zsh
/usr/local/bin/aws s3 cp /Library/FileMaker\ Server/Data/Backups/S3/noon_db_* s3://testbackupnoon
rm -rf /Library/FileMaker\ Server/Data/Backups/S3/*
为了在当前用户文件夹中创建日志文件并显示任何错误或成功,我应该使用什么代码语法以及将其插入上述脚本的什么位置?
谢谢
答案1
您可以使用该exec
命令重定向脚本其余部分的输出,就像在单个命令上一样。因此,exec >>~/testbackupnoon.log 2>&1
在脚本开头添加类似以下内容会将所有输出(stdout 和 stderr)附加到当前用户主目录中的 testbackupnoon.log。如果您希望将输出发送到文件和终端,改用类似的exec > >(tee -a t.log) 2>&1
。
假设您要将内容附加到文件(如我上面所建议的),最好添加一些常规信息,例如操作开始和完成时的时间戳,以及运行之间的空白行。我还会在脚本主体中添加一些错误检查,例如,如果复制到 S3 失败,它不会继续删除本地备份。因此,如下所示(警告:这尚未经过适当测试):
#!/bin/zsh
# start logging
exec > >(tee -a t.log) 2>&1
date -u +"%n%Y-%m-%dT%H:%M:%SZ backup to S3 started" >&2
/usr/local/bin/aws s3 cp /Library/FileMaker\ Server/Data/Backups/S3/noon_db_* s3://testbackupnoon || {
echo "Copy to S4 failed; local backups will be left" >&2
exit 1
}
rm -rf /Library/FileMaker\ Server/Data/Backups/S3/*
date -u +"%Y-%m-%dT%H:%M:%SZ backup to S3 completed" >&2