Вчерашняя история со поломанным синтаксисом правил iptables на сайте получила неожиданное продолжение и целое расследование. В очередной раз получил подтверждение тому, как хорошие бэкапы упрощают жизнь. Поделюсь с вами информацией.
Как я вчера сказал, по какой-то причине на сайте стала работать автозамена некоторых символов. Например, двойное тире превратилось в одинарное длинное. Это испортило кучу конфигов и скриптов в статьях на сайте. Представляю, сколько людей послали мне негатива, когда у них что-то не получилось.
Такое поведение не должно происходить, так как весь подобный код на сайте пишется в отдельных блоках, где автозамена не работает. Я стал разбираться, так как явно сломалось это недавно. Сам бы заметил быстро, так как регулярно пользуюсь своими статьями. Первое, что сделал, это развернул бэкап сайта месячной давности. У меня есть сервер для этого и скрипт, который автоматом все разворачивает из бэкапа, накатывая нужную версию.
В этой версии все работало как надо. Снепшотнул виртуалку и накатил бэкап недельной давности. Там уже была поломка. Восстановил обратно месячный архив и стал с ним работать. Не буду описывать все проводимые действия, но в итоге выяснил, что всему виной было обновление плагина WP YouTube Lyte. В очередной версии они что-то сломали и на всем сайте начались проблемы из-за этого. Откатил обновление и все заработало как надо.
В итоге, я достаточно быстро решил нетривиальную проблему. Без удобных бэкапов, подменного сервера и быстрого восстановления я бы потратил в разы больше времени. Бэкапы делаю всегда по следующей схеме:
- Месячные полные бэкапы хранятся по возможности вечно.
- Раз в неделю в течении месяца делаются полные недельные бэкапы и хранятся месяц.
- Каждый день сохраняются изменения относительно полного недельного бэкапа, хранятся 6 дней до следующего полного недельного бэкапа.
Таким образом, вы всегда, к примеру, можете откатиться назад на архив любого месяца в прошлом. Это меня уже выручало, когда находились какие-то поломки, тянущиеся из глубокого прошлого. Восстановление из старых бэкапов помогало их решить. Так же у вас за текущий месяц есть 4 полных недельных бэкапа. Ну и ежедневные для фиксации изменений по дням от полного.
В принципе, такой подход не требует каких-то сложных технических навыков. Чисто организационный момент и немного bash скриптов. Но лично я ни у кого не видел подобной или похожей схемы. Обычно все делают по простоте и хорошо, если есть хотя бы несколько реально рабочих полных бэкапов.
Пример реализации похожей схемы есть в статье -
https://serveradmin.ru/bekap-sayta-wordpress-na-yandeks-disk/ Там все сильно упрощено и делаются только полные бэкапы. В реальности я немного по-другому действую, и чаще всего по-разному, в зависимости от обстоятельств, но показать из практики больше нечего. Надо писать отдельный материал, но пока вообще нет возможностей для этого.