Бекап архивов Zenno-проектов в облачное хранилище (Яндекс.Диск, Dropbox, Облако Mail.ru)

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
Сисадмины делятся на 2 типа: тех, кто не делает бэкапы и тех, кто уже делает. © Народная мудрость

У меня уже были такие ситуации, что винда неожиданно ловила BSOD и все списки/таблицы что были в этот момент открыты на запись - превращались в пустоту (заполнялись NUL символами). После таких ситуаций очень неприятно разгребать полученные проблемы и искать где были куплены те или иные аккаунты (в лучшем случае, чаще же самореги уходили в небытие навсегда и без возможности найти эти аккаунты). Поэтому я стал периодически руками создавать архив со всеми проектами и файлами (списками и таблицами), которые лежат по соседству. Так как я отлично понимаю, что рано или поздно от постоянной нагрузки (чтение/запись) - жесткий диск умрет, то я складывал эти архивы в облако (Яндекс.Диск). Но во всей этой ситуации больше всего меня смущало то, что это приходилось делать руками и я часто забывал об этой процедуре.

Изначально, я хотел поставить какую-нибудь программу для бекапа и забыть об этом всём, но погуглив и почитав описания к 100-500МБ монстрам я огорчился и понял, что лучше сделать свое небольшое решение в котором я уверен, чем нагружать систему лишними и слишком неудобными инструментами.

Что именно мне не понравилось в большинстве программ для бекапа:
  1. Данные бекапятся "как есть", без возможности заворачивания в архив.
  2. Много где бекап идет с помощью "diff-ов", а зачем мне это, если всё равно зенно-шаблоны - состоят из нечитаемых бинарных данных?
  3. Бекап запускается точно также руками, нет встроенных планировщиков задач или их демоны слишком тяжелые и нет уверенности, что когда-нибудь они "не отвалятся".
  4. Нет возможности удалять старые архивы (самоочистка).
  5. Бекап только за день, но нет за месяц.
Изначально я подумал, что проще всего написать на C# небольшую программу, которая будет проверять все нужные условия и запускать процесс бекапа, но меня остановила та мысль, что это будет не реюзабельно, т.к. если я выложу готовый .exe файл, то возникнут вопросы - "что внутри?", а если выложу исходник - то большинство не сможет его скомпилировать. Поэтому было решено написать простенький .bat-файл, который запускался бы стандартным windows-шедуллером.

А теперь мы подходим к самому интересному: "чем мы будем собирать всё добро?"

Ответ прост WinRAR (.rar формат). Почему именно он:
  1. Есть возможность добавлять информацию для восстановления.
  2. Есть тестирование архива на ошибки после создания.
  3. Установлен на большинстве windows-машин.
  4. Возможность создания архива на trial-копии и даже на незарегистрированной и истекшей по времени копии.
  5. Есть возможность шифровать архив по паролю.
Поразвлекавшись и покопавшись в крайне уродливом скриптовом языке для создания .bat файлов я всё таки "родил" бекапер на 69 строк с проверкой установлен ли сам WinRAR (без неё: 49 и это ещё не предел).

Данный бекапер у меня работает по схеме: запускаем каждый день ночью, но когда количество архивов превысит 14 штук (2 недели), то удаляем все старые архивы до этой даты (текущий день минус 14 дней). Также, запущен второй вариант: он делает архивы ночью 1го числа каждого месяца, чтобы иметь и старые версии, но хранятся месячные копии только за последние 12 месяцев (старые автоматически удаляются). Все архивы складываются в Яндекс.Диск (вот тут я писал об акции, которую проводит Я.Диск, где можно "на шару" получить +32ГБ, или для особо опытных + неограниченное количество места - бесплатно).


В приложенных файлах архив с 2 бекаперами:
  • zenno_backup_daily.bat — для запуска каждый день;
  • zenno_backup_monthly.bat — для запуска в начале каждого месяца.

Рассмотрим настройки этих мелких скриптов.

Сразу же скажу, что если вы пересохраните их в другой кодировке или будете использовать внутри русскоязычные символы - скорее всего у вас они не заработают. Я поковырялся-поковырялся, чтобы это исправить, но так и не нашел 100% решения этой проблемы, поэтому просто учтите заранее: никаких путей с русскими буквами, менять файлы нужно через Notepad++.

В идеале: нужно настроить всего 2 переменные в обоих .bat файлах. Это:
Код:
set zenno_dir=C:\zenno
- путь к директории с проектами для ZP. Без русских букв и пробелов (с пробелами в пути потребуются кавычки и я не ручаюсь, что с ними всё заработает).


Код:
set backup_dir=C:\YandexDisk\zenno\daily\
- путь к директории, куда складывать ежедневные бекапы (для месячных - нужна другая директория). Также без русских букв, пробелов и со слешем в окончании(!). Данная директория уже должна присутствовать на диске.


Но если у вас WinRAR установлен по какому-то не стандартному пути, то ещё нужно будет изменить путь к rar.exe (именно к нему, а НЕ winrar.exe):
Код:
set rar_path=
- он прописывается в этой переменной. Но вначале попробуйте запустить процесс бекапа без прописывания туда чего-либо, скорее всего у большинства скрипт сам "сдетектит" что нужно запустить.


При создании бекапа также используются определенные функции из самого винрар, они прописаны в переменной rar_argum и вот их описание:
  • -m3 — Метод сжатия (0-без сжатия...3-обычный...5-максимальный)
  • -dh — Открывать совместно используемые файлы (без этого все файлы, что открыты в этот момент – не забекапятся!)
  • -r — Включить в обработку подкаталоги
  • -y — Подразумевать ответ 'Да' на все запросы
  • -rr — Добавить данные для восстановления
  • -t — Протестировать файлы после архивации
  • -mt1 — Количество потоков (во сколько потоков процессора будет идти создание архива. Так как скорее всего у вас будет в это время пахать зенка – не советую повышать количество потоков, чтобы не мешать ей)
  • -ag_yyyy_mm_dd_hh_mm — Добавить к имени архива текущие дату и время (в формате 2017_05_11_12_00 – именно с таким видом в стандартном explorer'e файлы будут идти в правильном порядке)
  • -inul — Не показывать никаких сообщений (если удалите вот этот аргумент, то сможете разобраться почему архив не создается, но по факту когда уже всё работает – не зачем выводить все данные процесса создания архива в консоль)

Удаление старых архивов происходит с помощью утилиты forfiles.exe - в windows server 2012R2 она у меня уже была, но возможно, что у вас её нет. В этом случае советую попробовать поставить Windows Server 2003 Resource Kit Tools, хоть там её и нет в списке, но все источники дают ссылку именно туда. Если кто-то найдет где взять только эту утилиту без кучи хлама, чтобы она запускалась под всеми системами - то с удовольствием поменяю тут ссылку.

Естественно, первоначально стоит попробовать создать бекап руками (запустив оба этих .bat файла) и проверив, что бекапы создаются и "всё окей".

И на последок: осталась самая интересная часть - "как это добро запускать автоматически?"

Так как у меня стоит windows server 2012R2, то я покажу на его примере. В принципе, скорее всего в других версиях винды - это будет аналогично.

  1. Стандартный планировщик заданий для Windows находится в: Панель управления -> Администрирование -> Планировщик заданий (или можно запустить по пути: C:\Windows\system32\taskschd.msc )
  2. Далее справа выбираем "Создать задачу":
  3. Прописываем имя:

  4. Добавляем триггер запуска:
    1. Пример для ежедневного запуска:
    2. Пример для ежемесячного запуска (предварительно нужно создать второе задание!!!), но указываем другое время, чтобы не запускать одновременно 2 процесса архивирования
  5. Добавляем действие

    Для ежемесячного запуска путь будет другой, не забудьте.

  6. Добавляем условия:

  7. Добавляем параметры:

  8. Сохраняем задачу :-)

Всё, теперь можно жить спокойно:


Немного ответов на вопросы, которые могут сразу же задать:
  1. "Почему стоит складывать бекапы в облачное хранилище?" - потому что в случае выхода из строя вашего жесткого диска - они там хотя бы останутся.
  2. "Почему запуск через планировщик виндовс, а не через зенку?" - потому что мне идеологически не нравится идея запускать бекап через программу, данные которой и бекапим. Ну и всё таки виндовый планировщик то надежнее.
  3. "Как восстанавливать данные?" - просто распаковать архив обратно, но естественно проверив всё руками. К сожалению, тут не предусмотрено как проверять измененные файлы и восстанавливать только то, что "ушло в небытие", но это гораздо усложнит данную заметку и вообще выйдет за рамки статьи.
  4. "Как быть в случае того, если в то место на жестком диске, куда запишется архив - попадут нулевые биты и архив будет испорчен?" - если повезет, то поможет информация для восстановления, которую мы добавляем во время создания архива. Если нет, то это будет грустно, но подумайте - каков шанс получить именно такой косяк? Скорее уж просто жесткий диск целиком умрет.

И в виде домашнего задания:
  1. Подумайте самостоятельно как можно бекапить купленные проекты (ботов) и данные к ним, что они создают/используют.
  2. Подумайте и решите как делать резервные копии БД (mysql, postgresql, mssql), если вы используете их.

Не претендую на звание "первооткрывателя" или какие-либо лавры, но надеюсь, что данная статья поможет вам сэкономить кучу нервов в случае отказа оборудования. Поэтому советую вам прямо сейчас задуматься о том, что стоит делать бекапы, даже если у вас никогда не возникало проблем :-)


А как вы бекапитесь?


PS: данная статья опубликована специально во время конкурса, но не в рамках/разделе конкурса, т.к. идея пришла спонтанно, да и что-то активность в конкурсном разделе "нулевая", поэтому я посчитал, что стоит так приободрить тех, кто заявился и будет публиковаться ;-)


UPD:
1. Бекап MySQL баз данных
: https://zennolab.com/discussion/threads/37357/#post-286012 и его обновленнная версия: https://zennolab.com/discussion/threads/37357/post-339621
2. Бэкап настроек ZennoPoster (плагины, настройки и тд): https://zennolab.com/discussion/threads/37357/post-419737
 
Категория
Полезно

Вложения

Для запуска проектов требуется программа ZennoPoster.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте программу ZennoPoster. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Последнее редактирование:

Gerero

Client
Регистрация
20.12.2010
Сообщения
86
Благодарностей
83
Баллы
18
Код:
https://www.duplicati.com/
 

Redsmokky

Client
Регистрация
06.10.2015
Сообщения
313
Благодарностей
195
Баллы
43
Спасибо, отличный вариант, я привязывал папку с проектами к облаку, но это не очень удобно, постоянно шуршит синхронизация и иногда сыплются excel_таблицы, а из архива с датой вытащить не проблема)
 

DenisK

Client
Регистрация
28.06.2016
Сообщения
591
Благодарностей
289
Баллы
63
Многим пригодится метод, так как все бывает.
 
  • Спасибо
Реакции: Lord_Alfred

Tuw

Client
Регистрация
07.09.2014
Сообщения
441
Благодарностей
150
Баллы
43
p.s. многие пишут, что мол не стоит доверять и бекапить файлы приватные, а я ставлю очень длиннный и сложный пасс на архив и бекаплю.)
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
можно по паролю заархивировать?
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
Последнее редактирование:

deopl

Client
Регистрация
06.12.2011
Сообщения
667
Благодарностей
126
Баллы
43
Вот почему так всегда?
Нормальные темы внеконкурса, а всякий публичный, рекламный шлак в конкурсе.

За тему жирный плюс
 

vierasen

Client
Регистрация
10.12.2015
Сообщения
582
Благодарностей
277
Баллы
63
У меня все гораздо проще, есть папка гугл драйва и все файлы шаблонов находятся там как одновременно на всех дедиках, да идет синхронизация, но если требуется файлы с разных мест обрабатывать выношу просто данный шаблон в необновляемую папку.
 

cafen

Client
Регистрация
23.02.2016
Сообщения
27
Благодарностей
10
Баллы
3
Я использую BackUp32 , бесплатная, портабл. сделана в 2001 году, и до сих пор работает на win7.
 
Последнее редактирование:

Mahno

Client
Регистрация
16.05.2015
Сообщения
440
Благодарностей
94
Баллы
28
Я юзаю два бэкапщика + облако в mega.nz. Все кучеряво. Главное когда бэкапишь, все стабильно. А когда не бэкапишь, все улетает вникуда. Закон подлости
 
  • Спасибо
Реакции: GreenWay

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 630
Благодарностей
1 225
Баллы
113
Подумайте и решите как делать резервные копии БД (mysql, postgresql, mssql), если вы используете их.
Кто-нибудь домашнее задание выполнил? Просто хотелось как раз в пару шаблонов по обновлению остатков в интернет-магазинах напрямую через БД добавить бэкап базы, но пока так и не понял, как это реализовать (без захода в phpMyAdmin, конечно).
Может, есть какие-то прямые sql-запросы, которые создавали бы бэкап и возвращали файл? ))
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
Может, есть какие-то прямые sql-запросы, которые создавали бы бэкап и возвращали файл? ))
На *nix системах в пакете mysql-server есть утилита командной строки mysqldump, которая делает дамп выбранной БД в файл. Скорее всего и для win системы есть такая, но точно не скажу, т.к. не пользовался.
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
Т.к. никто не сделал "домашнее задание", то я выложу свое решение, основанное на вышеприведенном бекапе в rar.

Бекап всех баз данных из MySQL в RAR архивы (в архивах будут *.sql для каждой базы).

Для настройки:
  1. Нужно прописать свои настройки подключения к MySQL в файле mysql_config.cnf
  2. В файле бекапа mysql_backup_daily.bat поменять:
    • backup_dir - путь к папке, куда будут бекапится архивы (со слешем на конце!)
    • mysql_path - путь к mysql.exe
    • mysqldump_path - путь к mysqldump.exe
  3. Прописать задачу в планировщике, как написано в первом посте.
 

Вложения

GreenWay

Client
Регистрация
11.05.2012
Сообщения
432
Благодарностей
139
Баллы
43
Блииин, на ночь оставил пару шабов на post-get запросах выполняться - утром ноут шуршал, но экран не светился. После перезагрузки - вроде как битые сектора на жестком - система не запускается. Нашел карман - карман видел системный, медийный, а вот диск с Zenno не видел - а там все шабики, и заготовки и прочее по мелочи. Подождал еще пару часов - раздуплился карман и обнаружил таки диск с zenno. Все удалось вытащить.
Так что СПАСИБО ТС за решение, наставил облаков и настроил копирование, при этом удалив все лишнее (было много недопощенных файликов и прочего мусора)
Так что...
TuQ5iHE.jpeg
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
Блииин, на ночь оставил пару шабов на post-get запросах выполняться - утром ноут шуршал, но экран не светился. После перезагрузки - вроде как битые сектора на жестком - система не запускается. Нашел карман - карман видел системный, медийный, а вот диск с Zenno не видел - а там все шабики, и заготовки и прочее по мелочи. Подождал еще пару часов - раздуплился карман и обнаружил таки диск с zenno. Все удалось вытащить.
Так что СПАСИБО ТС за решение, наставил облаков и настроил копирование, при этом удалив все лишнее (было много недопощенных файликов и прочего мусора)
Так что...
У меня у самого недавно жесткий диск в iMac умер, да так, что оттуда инфу на 99% нереально вытащить.
Хорошо, что всё важное в облаках было, да забекаплено везде..
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
Не смог удержаться, чтобы не запостить это тут)

 

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
800
Благодарностей
179
Баллы
43

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Благодарностей
30
Баллы
28
Конечно красиво написано, но лучше делать это Acronis, можно создавать инкрементные и фулл бекапы.
 

Estrys

Пользователь
Регистрация
15.09.2016
Сообщения
45
Благодарностей
42
Баллы
18
чем Яндекс диск лучше флешка
Вон пример с запретом Яндекс.... Все может случится, а 2 раза в неделю воткнуть флешку и все ок.
 
  • Спасибо
Реакции: Nick

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
800
Благодарностей
179
Баллы
43
только диверсификация своих копии, поможет спасти файлы.
Если хранить в 2-3 местах одновременно вероятность что все три места хранения одновременно испортятся, мало вероятна
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
Чуть обновил бекапилку баз данных mysql: теперь временные файлы (не заархивированные sql дампы) не будут сохраняться в под-директории яндекс.диска / дропбокса / гугл драйва.
А то я заметил, что у меня место на яндекс.диске, куда бекаплюсь как-то очень быстро убегает: оказывается, что при создании этих временных дампов перед архивацией они тоже успевают улететь в облако и потом сразу же оттуда удаляются, попадая в "корзину" на яндекс диске, а это занимает место. Сделал чтоб они сохранялись в папке на диске C:

Скачать обновленную версию можно отсюда: https://gist.github.com/lord-alfred/49f53c06eb94d9cc41a29f52fd18197d
 
  • Спасибо
Реакции: phoenixs

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
186
Благодарностей
14
Баллы
18
Очень удобно, спасибо. Как раз искал решение, менее громоздкое, чем работа с программами, типа acronis.
 

KitKat21

Client
Регистрация
02.05.2017
Сообщения
263
Благодарностей
191
Баллы
43
очень полезно, спасибо!

Dropbox также очень полезен для резервного копирования. Часто мои xlsx и txt файлы также полностью стираются. Или иногда случайно перезаписываю файл.

Я запускаю все свои проекты в Dropbox, поэтому он автоматически сохраняет сотни резервных копий версий для каждого файла.
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
Во время бежит! Почти 2 года прошло, как я юзаю этот способ бекапа zenno-проектов и mysql-баз данных в яндекс диск :-)
А сегодня я выложу скрипт для такого же бекапа настроек ZennoPoster, т.к. недавно заметил ещё одну тему о потере этих данных. К сожалению, это уже не первая такая проблема у пользователей, поэтому было решено напилить универсальный скрипт для себя и выложить его для всех.

Скрипт делает резервную копию (в архиве) следующих директорий:
  • %AppData%\ZennoLab - настройки ZP, где лежат все сниппеты, задания и прочее за исключением:
    • %AppData%\ZennoLab\ZennoPoster\5\ProjectMaker\Browser - профили браузера для PM, они там лежат если открыт PM с использованием браузера. Незачем ими место забивать в архиве
    • %AppData%\ZennoLab\ZennoPoster\5\Data - какие-то базы GeoIP, прокси и прочая мишура, которая занимает место. Не проверял, но скорее всего с инсталлом новой зенки - эти файлы должны сами там появиться, поэтому нет смысла бекапить их
  • %ZennoPosterCurrentPath%\ExternalAssemblies - бекап dll библиотек, используемых в проектах
  • %UserProfile%\..\%username%\Documents\ZennoLab - бекап локальных плагинов (появились в недавней версии зенки)
  • %UserProfile%\Documents\ZennoLab - бекап купленных продуктов (скорее всего должны сами восстановиться, но не помешает ведь?) + вроде бы бекап настроек (делается по кнопке из настроек)
Да, сразу же отвечу, что плагины и купленные продукты сейчас лежат в разных директориях. Это скорее всего бага, я уже о ней репортил. Поэтому пути для бекапа отличаются таким образом (у меня точно, поэтому там такой небольшой изврат с бекапом плагинов).

И да, если у вас в настройках сменены пути к этим директориям, то и в скрипте их нужно поменять!

Настраивать (включать по расписанию) скрипт бекапа нужно точно также - как описано в первом посте, абсолютно ничего нового нету. Удаляет старые бекапы, старше 7 дней (с помощью forfiles), бекапит в яндекс диск.

PS: если вдруг я забыл какую-то директорию, которую также нужно бекапить - напишите, пожалуйста.
PPS: проверьте после тестового запуска бекапа - всё ли корректно забекапилось, особенно плагины, если используете их!
 

Вложения

Последнее редактирование:

Sanekk

Client
Регистрация
24.06.2016
Сообщения
999
Благодарностей
390
Баллы
63
Если нужно сделать бэк из нескольких директорий в один архив,то:
  1. Создайте в папке с батником файл backup.lst
  2. Пропишите в батнике название файла в таком виде @backup.lst вместо пути к папке с бекапом
  3. В файле backup.lst с новой строки пропишите путь к директориям которые нужно забекапить
43977
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
Написал подробную пошаговую инструкцию по настройке резервного копирования данных с серверов в S3.

https://t.me/Lord_Alfred/99

 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)