Я новичок в MacOS. В нашей среде мы используем MacOS и настраиваем Time Machine для резервного копирования на удаленный диск.
Большая часть MacOS - это либо Mojave, либо Catalina.
У меня есть сценарий, который проверяет, полностью ли выполнено резервное копирование, и в зависимости от статуса отправляет уведомления по электронной почте.
С тех пор, как мы обновили MacOS до High Sierra или Catalina, мы получаем ложные уведомления по электронной почте, и даже если Time Machine завершает резервное копирование, мы получаем уведомление: «Time Machine не завершила резервное копирование на этом Mac!»
Я добавил «Машина времени» и «Терминал» в разделе «Полный доступ к диску» в системных настройках.
Прилагаю свой сценарий для справки.
Жду некоторых указателей.
Спасибо.
#!/bin/bash
# This script checks the Time Machine results file on a Mac, and reports if a backup has completed within a number of minutes of the current time.
critMinutes=1440;
FROM="me@example.com>"
RCPT="me@example.com"
subject="Time Machine Backup"
thishost=`hostname -s | sed -e 's/^[^.]*\.//'`
# Check to see if we're running Mavericks as Time Machine runs a little differently
osVersion=`sw_vers -productVersion | grep -E -o "[0-9]+\.[0-9]+"`
isMavericks=`echo $osVersion '== 10.9' | bc -l`
isYosemitePlus=`echo $osVersion '< 10.2' | bc -l`
currentDate=`date +%s`
if [ $isMavericks -eq 1 ] || [ $isYosemitePlus -eq 1 ]
then
# 10.9+ Check
lastBackupDateString=`tmutil latestbackup | grep -E -o "[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{6}"`
if [ "$lastBackupDateString" == "" ]
then
lastBackupDateString=`defaults read /Library/Preferences/com.gfi.MaxRMM.TimeMachine LastBackup`
if [ "$lastBackupDateString" == "" ]
then
echo "CRITICAL - $thishost Time Machine has not completed a backup on this Mac!" | mail -s "Time Machine Backup" $RCPT
exit 1002
fi
fi
lastBackupDate=`date -j -f "%Y-%m-%d-%H%M%S" $lastBackupDateString "+%s"`
`defaults write /Library/Preferences/com.gfi.MaxRMM.TimeMachine LastBackup -string ''$lastBackupDateString''`
else
# < 10.9 Check
lastBackupDateString=`defaults read /private/var/db/.TimeMachine.Results BACKUP_COMPLETED_DATE`
if [ "$lastBackupDateString" == "" ]
then
echo "CRITICAL - $thishost Time Machine has not completed a backup on this Mac!" | mail -s "Time Machine Backup" $RCPT
exit 1002
fi
lastBackupDate=`date -j -f "%Y-%m-%e %H:%M:%S %z" "$lastBackupDateString" "+%s"`
fi
diff=$(($currentDate - $lastBackupDate))
critSeconds=$(($critMinutes * 60))
if [ "$diff" -gt "$critSeconds" ]
then
echo "CRITICAL - $thishost backup not taken since `date -j -f %s $lastBackupDate` (more than 1 day)!" | mail -s "Time Machine Backup" $RCPT
exit 1003
fi
if [ "$lastBackupDate" != "" ]
then
echo "OK - $thishost backup taken within last 1 day. (`date -j -f %s $lastBackupDate`)" | mail -s "Time Machine Backup" $RCPT
exit 0
else
echo "CRITICAL - $thishost could not determine the last backup date." | mail -s "Time Machine Backup" $RCPT
exit 1002
fi