Настройка еженедельного резервного копирования CRON

Если вы получите экран входа в систему, когда ваш компьютер просыпается, простым решением будет добавить service bluetooth start к вашему ~/.profile, поскольку GNOME будет выполнять команды в этом файле при входе в систему. Если вы не используете GNOME или если вы не получите экран входа в систему, вы можете добавить файл в /etc/pm/sleep.d с последующими строками в нем

#!/bin/sh

case "$1" in
    thaw)
        service bluetooth start        
        ;;  
esac

, этот скрипт запустит службу bluetooth т.е. bluetoothd, когда ваша система возвращается из спящего режима / спящего режима

7
задан 4 March 2011 в 20:40

40 ответов

Вы можете попытаться перенаправить ошибки из вашей линии cron в файл, например:

/usr/local/mysqlbackup.sh & amp; gt; /var/log/mysqlcron.log

Это должно ловить как stdout, так и stderr и сообщать, есть ли синтаксическая ошибка и т. д.

Примечание: если вы делаете резервную копию живой базы данных, вы должны используйте специальные утилиты для резервного копирования, например mysqldump , вместо использования общей команды tar. Причина в том, что если файлы внутри / var / lib / mysql / изменяются во время выполнения tar, вы можете получить несогласованное изображение базы данных.

0
ответ дан 6 August 2018 в 03:57

Несколько точек для создания:

  • Почему вы используете timestrings в сценариях /etc/cron.weekly / ? Вы должны использовать только исполняемые скрипты. Вам не нужно им наступать или что-то еще. Это просто дублирует их работу. Посмотрите на /etc/cron.daily/apt для примера того, о чем я говорю. Это простой сценарий.
  • В комментарии от пользователя geirha файл не может иметь расширение. Нечетный, я знаю, поэтому переименуйте его: sudo mv /etc/cron.weekly/mysqlbackup{.sh,}
  • Вам нужно запустить sudo chmod + x / etc / cron.weekly / mysqlbackup , чтобы сделать его исполняемым. Затем вы можете проверить его, запустив его, используя этот путь.
  • Если вы оставите его в /etc/cron.weekly / , скрипт будет запущен с правами root. Ни одна из ваших ~ / ссылок не будет работать. Используйте полные пути. Я бы предположил, что после того, как вы сделаете mkdir , вы cd в него, и это уменьшит огромные пути в последующих командах. Если вам нужны сгенерированные файлы, которые будут принадлежать вашему пользователю, сделайте свой скрипт chown для своего пользователя, когда он будет создан. Я не вижу причин, по которым любой из них можно было бы запустить с помощью root. Вы можете использовать скрипт в своем домашнем каталоге и просто использовать стандартный crontab -e , чтобы добавить свое правило и запустить его. Он все еще должен быть исполняемым, и я по-прежнему рекомендую вам использовать полные пути, но он немного облегчает разрешения.
7
ответ дан 7 August 2018 в 21:55

День недели - это числовое поле, поэтому он не работает, пытаясь разобрать «fri». Измените это значение на 5 (воскресенье равно 0). edit: Я вижу, что OP был обновлен, чтобы исправить это, и все еще есть проблемы, но они адресованы в других ответах.

Формат cron хорошо документирован в Интернете, поэтому я обычно заканчиваю проверку документов до написав новое задание cron: http://en.wikipedia.org/wiki/Cron

Кроме того, убедитесь, что вы используете crontab -e (или подобное), чтобы отредактировать ваш cron-файл, который будет проверяться на повторную обработку.

2
ответ дан 7 August 2018 в 21:55

Вы можете попытаться перенаправить ошибки из вашей линии cron в файл, например:

/usr/local/mysqlbackup.sh & amp; gt; /var/log/mysqlcron.log

Это должно ловить как stdout, так и stderr и сообщать, есть ли синтаксическая ошибка и т. д.

Примечание: если вы делаете резервную копию живой базы данных, вы должны используйте специальные утилиты для резервного копирования, например mysqldump , вместо использования общей команды tar. Причина в том, что если файлы внутри / var / lib / mysql / изменяются во время выполнения tar, вы можете получить несогласованное изображение базы данных.

0
ответ дан 7 August 2018 в 21:55

Несколько точек для создания:

  • Почему вы используете timestrings в сценариях /etc/cron.weekly / ? Вы должны использовать только исполняемые скрипты. Вам не нужно им наступать или что-то еще. Это просто дублирует их работу. Посмотрите на /etc/cron.daily/apt для примера того, о чем я говорю. Это простой сценарий.
  • В комментарии от пользователя geirha файл не может иметь расширение. Нечетный, я знаю, поэтому переименуйте его: sudo mv /etc/cron.weekly/mysqlbackup{.sh,}
  • Вам нужно запустить sudo chmod + x / etc / cron.weekly / mysqlbackup , чтобы сделать его исполняемым. Затем вы можете проверить его, запустив его, используя этот путь.
  • Если вы оставите его в /etc/cron.weekly / , скрипт будет запущен с правами root. Ни одна из ваших ~ / ссылок не будет работать. Используйте полные пути. Я бы предположил, что после того, как вы сделаете mkdir , вы cd в него, и это уменьшит огромные пути в последующих командах. Если вам нужны сгенерированные файлы, которые будут принадлежать вашему пользователю, сделайте свой скрипт chown для своего пользователя, когда он будет создан. Я не вижу причин, по которым любой из них можно было бы запустить с помощью root. Вы можете использовать скрипт в своем домашнем каталоге и просто использовать стандартный crontab -e , чтобы добавить свое правило и запустить его. Он все еще должен быть исполняемым, и я по-прежнему рекомендую вам использовать полные пути, но он немного облегчает разрешения.
7
ответ дан 10 August 2018 в 10:10

День недели - это числовое поле, поэтому он не работает, пытаясь разобрать «fri». Измените это значение на 5 (воскресенье равно 0). edit: Я вижу, что OP был обновлен, чтобы исправить это, и все еще есть проблемы, но они адресованы в других ответах.

Формат cron хорошо документирован в Интернете, поэтому я обычно заканчиваю проверку документов до написав новое задание cron: http://en.wikipedia.org/wiki/Cron

Кроме того, убедитесь, что вы используете crontab -e (или подобное), чтобы отредактировать ваш cron-файл, который будет проверяться на повторную обработку.

2
ответ дан 10 August 2018 в 10:10

Вы можете попытаться перенаправить ошибки из вашей линии cron в файл, например:

/usr/local/mysqlbackup.sh & amp; gt; /var/log/mysqlcron.log

Это должно ловить как stdout, так и stderr и сообщать, есть ли синтаксическая ошибка и т. д.

Примечание: если вы делаете резервную копию живой базы данных, вы должны используйте специальные утилиты для резервного копирования, например mysqldump , вместо использования общей команды tar. Причина в том, что если файлы внутри / var / lib / mysql / изменяются во время выполнения tar, вы можете получить несогласованное изображение базы данных.

0
ответ дан 10 August 2018 в 10:10

Несколько точек для создания:

  • Почему вы используете timestrings в сценариях /etc/cron.weekly / ? Вы должны использовать только исполняемые скрипты. Вам не нужно им наступать или что-то еще. Это просто дублирует их работу. Посмотрите на /etc/cron.daily/apt для примера того, о чем я говорю. Это простой сценарий.
  • В комментарии от пользователя geirha файл не может иметь расширение. Нечетный, я знаю, поэтому переименуйте его: sudo mv /etc/cron.weekly/mysqlbackup{.sh,}
  • Вам нужно запустить sudo chmod + x / etc / cron.weekly / mysqlbackup , чтобы сделать его исполняемым. Затем вы можете проверить его, запустив его, используя этот путь.
  • Если вы оставите его в /etc/cron.weekly / , скрипт будет запущен с правами root. Ни одна из ваших ~ / ссылок не будет работать. Используйте полные пути. Я бы предположил, что после того, как вы сделаете mkdir , вы cd в него, и это уменьшит огромные пути в последующих командах. Если вам нужны сгенерированные файлы, которые будут принадлежать вашему пользователю, сделайте свой скрипт chown для своего пользователя, когда он будет создан. Я не вижу причин, по которым любой из них можно было бы запустить с помощью root. Вы можете использовать скрипт в своем домашнем каталоге и просто использовать стандартный crontab -e , чтобы добавить свое правило и запустить его. Он все еще должен быть исполняемым, и я по-прежнему рекомендую вам использовать полные пути, но он немного облегчает разрешения.
7
ответ дан 13 August 2018 в 16:31
  • 1
    sudo chmod + x /etc/cron.weekly/mysqlbackup.sh все равно не заставит скрипт работать еженедельно. Cron игнорирует файлы с расширениями в этих каталогах. И вообще, сценарии не должны иметь расширений. – geirha 5 March 2011 в 16:32
  • 2
    @geirha Это важный комментарий very ! Это где-то документировано? – Limited Atonement 22 August 2013 в 19:30
  • 3
    @LimitedAtonement. Если вы посмотрите на значение по умолчанию / etc / crontab , run-parts используется для запуска заданий в / etc / cron. {Ежедневно, еженедельно , ежемесячно} , если anacron «не установлен». run-parts (8) в свою очередь объясняет, какие символы разрешены в именах файлов. Я считаю, что главная причина этого заключается в том, чтобы легко отключить работу, просто переименовав jobname в jobname.disabled или аналогичный. – geirha 22 August 2013 в 19:53

День недели - это числовое поле, поэтому он не работает, пытаясь разобрать «fri». Измените это значение на 5 (воскресенье равно 0). edit: Я вижу, что OP был обновлен, чтобы исправить это, и все еще есть проблемы, но они адресованы в других ответах.

Формат cron хорошо документирован в Интернете, поэтому я обычно заканчиваю проверку документов до написав новое задание cron: http://en.wikipedia.org/wiki/Cron

Кроме того, убедитесь, что вы используете crontab -e (или подобное), чтобы отредактировать ваш cron-файл, который будет проверяться на повторную обработку.

2
ответ дан 13 August 2018 в 16:31
  • 1
    fri и 5 являются действительными. Не все реализации cron позволяют использовать аббревиатуру вместо числа в будний день, но cron в Ubuntu делает. См. [D0] man 5 contab – geirha 5 March 2011 в 17:55

Вы можете попытаться перенаправить ошибки из вашей линии cron в файл, например:

/usr/local/mysqlbackup.sh & amp; gt; /var/log/mysqlcron.log

Это должно ловить как stdout, так и stderr и сообщать, есть ли синтаксическая ошибка и т. д.

Примечание: если вы делаете резервную копию живой базы данных, вы должны используйте специальные утилиты для резервного копирования, например mysqldump , вместо использования общей команды tar. Причина в том, что если файлы внутри / var / lib / mysql / изменяются во время выполнения tar, вы можете получить несогласованное изображение базы данных.

0
ответ дан 13 August 2018 в 16:31
  • 1
    cron запускает работу с помощью sh, если вы специально не указали это иначе, а & gt; не является sh-синтаксисом. & gt; файл & gt; & amp; 1 будет работать как с sh, так и с bash. – geirha 5 March 2011 в 19:01
  • 2
    Правда, хорошая точка. – bitwelder 16 March 2011 в 21:17

Другие вопросы по тегам:

Похожие вопросы: