Я использую последнюю версию Linux Mint. Мне было интересно, можно ли создать специальный cronjob для резервного копирования базы данных.
В моем /etc/cronjob
файле у меня есть следующий код:
# Minute Hour Day of Month Month Day of Week Command
# (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat)
30 4 * * 1-6 /home/users/backup.sh
По моему у /home/users/backup.sh
меня есть:
mysqldump -uroot -p MyDatabase > /home/users/backup_MyDB/full_myDB.sql
Вместо этого full_myDB.sql
я хотел бы иметь что-то вроде того, 2014-04-04_full_myDB.sql
где дата добавляется динамически в зависимости от даты, которую мы имеем.
Если файл резервной копии SQL старше одной недели, я бы хотел, чтобы cronjob удалил его автоматически.
Я использовал вышеуказанную информацию и хотел предоставить еще одно незначительное обновление, которое на самом деле усекает одну из действительно больших таблиц, которая замедляла наше резервное копирование.
Надеюсь, это поможет кому-то еще.
Используя вышеуказанную информацию, я создал базовый скрипт оболочки с именем mysqlbackup.sh со следующим содержимым:
Обязательно запустите: chmod + x mysqlbackup.sh
Я также поместил это в свой crontab -e:
источник
Я знаю, что это большой старый, но я использовал вышеупомянутые ответы и добавил инструкцию сжатия файла. Надеюсь, кто-то найдет это полезным.
1) Изучив немного, 7-zip кажется лучшим компрессором. Если ваш дистрибутив Linux поддерживает его, вы можете использовать установщик apt:
Кроме того, вы можете использовать tar.gz, если вы чувствуете себя более комфортно с ним.
2) Затем вы создаете скрипт, например,
/home/users/backup.sh
с содержанием:Этот скрипт найдет файлы с более чем 7 днями и удалит их, затем создаст дамп sql, затем 7-zip всех файлов .sql в каталоге, затем удалит все .sql в каталоге ( Кстати, вы можете при желании добавить команду mysql перед дампом, как отмечено в предыдущем ответе, если вам это нужно)
3) Мы делаем
chmod +x /home/users/backup.sh
так, чтобы он мог быть исполняемым.3.1) Вы должны проверить ваш скрипт, если он работает как задумано
4) Программируем задачу
crontab -e
Вот и все. Он будет выполнять резервное копирование базы данных MySQL каждый день в неделю в 4:30 (кроме воскресенья) и сжимать резервную копию
источник
Чтобы добавить ответ @ Graeme, возможно, стоит отметить, что иногда вам может понадобиться экранировать символ «%» в задании cron, чтобы он выглядел так:
источник