Зупинити відправлення електронною поштою скрипта для резервного копіювання?


13

Я створив сценарій резервного копіювання для резервного копіювання даних про світ на моєму сервері Minecraft щогодини за допомогою cron, але через те, що світи постійно редагуються гравцями, Тар говорив мені, що файли змінювалися під час їх читання. Я додав --ignore-command-error до tar в скрипті, і це пригнічує будь-які помилки, коли я запускаю його вручну, проте cron все одно надсилає повідомлення про те, що файли були змінені під час читання, і закінчується затоплення моєї пошти, оскільки це бігати раз на годину. Хтось знає, як це виправити? Це сценарій:

filename=$(date +%Y-%m-%d)
cd /home/minecraft/Server/
for world in survival survival_nether survival_the_end creative superflat
do
if [ ! -d "/home/minecraft/backups/$world" ]; then
mkdir /home/minecraft/backups/$world
fi
find /home/minecraft/backups/$world -mtime +1 -delete
tar --ignore-command-error -c $world/ | nice -n 10 pigz -9 > /home/minecraft/backups/$world/$filename.tar.gz
done

Відповіді:


22

Cron спробує надіслати електронний лист із будь-яким висновком, який може статися під час виконання команди. З чоловічої сторінки компанії cron:

Під час виконання команд будь-який вихід надсилається по електронній пошті власнику crontab (або користувачеві, вказаному в змінній середовища MAILTO в crontab, якщо така існує). Будь-який вихідний завдання також може бути надісланий в syslog за допомогою параметра -s.

Таким чином, щоб відключити його для конкретного запису на Crontab, просто захопіть усі команди, що виводяться, або направляйте їх у файл або на /dev/null.

30 * * * * notBraiamsBackup.sh >/dev/null 2>&1

1
Д: використовуючи мій приклад!
Брайам

@Braiam - вибачте, що я почував себе лінивим і не відчував, як набрати його. Я б все одно набрав те саме 8-).
slm

@Braiam - це краще? 8-).
slm

Чудово працює, саме те, що я шукав.
Картер

Зауважте, що в моєму CentOS 7, з crontabне cron, -sозначає selinux context.....
WesternGun

13

Замість того, щоб /dev/nullперебирати все на (що може залишати вас без уявлення про те, що сталося, якщо щось пішло не так), ви можете передавати свої сценарії до таких файлів:

30 * * * * backup.sh > ~/logs/backup.log

А щоб перестати отримувати пошту, просто встановіть MAILTOзмінну на порожню рядок на початку вашого файлу crontab:

MAILTO=""

4

Якщо ви не хочете надсилати пошту для конкретного завдання, ви можете просто додати >/dev/null 2>&1в кінці рядка:

30 * * * * backup.sh >/dev/null 2>&1

Я вибираю такий шлях: ви втратили все, але акуратно.
WesternGun

0

До вашої команди gnu tar слід додати наступне : --warning = файл-файл змінено

Це придушить усі повідомлення " % s: файл змінився, коли ми його читали ". І використовуючи це рішення (і не перенаправляючи все на / dev / null), ви все одно зможете отримувати повідомлення про помилки, коли речі дійсно йдуть не так.


З --warning прапором ви можете вмикати та вимикати багато різних повідомлень , які бітумінозних відбитків. Ось відповідна частина посібника зі всіма ключовими словами, які ви можете використовувати: https://www.gnu.org/software/tar/manual/html_section/tar_27.html .

Примітка: при додаванні « ні- » перед ключовим словом, то повідомлення буде придушуватися.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.