Как стать автором
Обновить

Комментарии 14

Мне кажется не очень рационально так хранить. Всякое бывает в жизни. Лучше разделять на месячные копии, недельные и суточные.
Вычитывайте, пожалуйста, статью перед публикацией, текста на полстраницы и все равно неприятно читать:
во общем

Не понятный метод с не ясным

и что бы не переполнять

и т.д.
А с каких пор это нормально — светить пароли от БД и FTP в кронтабе?
Какие будут предложения? где хранить? можно в принципе с файла читать параметры.
~/.my.cnf с правами 600
+ файл с паролем на ftp с теми же правами
Прочитал статью и возникло 2 вопроса:

1. Зачем вам в начале скрипта аж три класса, которые ничего не делают?
2. Почему по FTP? Этот протокол же небезопасный! Не лучше ли использовать SFTP вместо него?
1. Начал учится 2 недели назад, по классическому учебнику Марк Саммерфилд «Программирование на Python 3»,
это классический подход возбуждать собственные исключения, если верить Саммерфилду ))
2. Хорошее замечание, оказывается есть pysftp, судя по документации еще и проще чем ftplib

Вот FTP это конечно зло и пароли тоже не комильфо.
Желательно перейти на SSH и аутентификацию по ключу.
Еще при неполадках неплохо письмо слать.
import paramiko
import scp
import smtplib
Я с серверов подобной связкой логи прямо в juputer notebook качаю.
Для быстрого поиска аномалий.

Backup-manager.
Бэкап чего угодно (файлы/mysql/pgsql), шифрование, инкрементные бэкапы, авторотация, логи, хеш-суммы, аплоад через/в scp, ssh-gpg, ftp, rsync, Amazon S3…

Ну а на Питоне можно что-нибудь другое потренировать, менее критичное, нежели работу с резервными копиями.
Хотя дело ваше.
Настоящий самурай делает бэкапилку сам! Это как меч. Сделаешь плохо…

Про MySQL. Зависит от сложности и размера БД, но я бы посоветовал обратить внимание на следующее:


  • В приведенном варианте восстановить БД отдельно взятого клиента так просто не получится. Лучше бекапить каждую БД отдельно.
  • Если у кого-то были процедуры, то их в бекапе не окажется.
  • mysqldump делает дамп в текстовом виде. Если БД большая, то это и долго, и много места занимает. Потому лучше вывод mysqldump сразу передавать в gzip, минуя промежуточный этап записи на диск.
  • Можно легко поймать ситуацию когда целостность данных в дампе нарушится. Потому хорошо добавить ключ --single-transaction.
  • Посмотреть percona xtrabackup. В этом случае получится делать бекап всех/некоторых БД быстро и не мешая пользователям, и с гарантированой целостностью.
В приведенном варианте восстановить БД отдельно взятого клиента так просто не получится.

Скрипт делает бекап каждой базы отдельно.
Если у кого-то были процедуры, то их в бекапе не окажется.

Наверное Вы правы )
минуя промежуточный этап записи на диск

Тоже верно!
Потому хорошо добавить ключ --single-transaction

За ключ спасибо )
Скажите мне зачем для такого базового набора функционала Python?
Есть же bash и logrotate. Больше инструментов для этой задачи не нужно.
Пару месяцев назад с коллегой реализовали похожий велосипед https://github.com/antirek/backuper ))
— бэкап для mysql, pgsql, mongodb
— для каждой бд указывается свой конфиг-файл (очень удобно — добавил/удалил)
— бэкап копируется на ftp
— отправляет уведомление на емейл
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории