Lord_Alfred

Client
Joined
Oct 9, 2015
Messages
3,916
Reaction score
3,877
Points
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 файлах. Это:
Code:
set zenno_dir=C:\zenno
- путь к директории с проектами для ZP. Без русских букв и пробелов (с пробелами в пути потребуются кавычки и я не ручаюсь, что с ними всё заработает).


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


Но если у вас WinRAR установлен по какому-то не стандартному пути, то ещё нужно будет изменить путь к rar.exe (именно к нему, а НЕ winrar.exe):
Code:
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
 
Категория
Полезно

Attachments

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

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

Last edited:

Gerero

Client
Joined
Dec 20, 2010
Messages
88
Reaction score
86
Points
18
Code:
https://www.duplicati.com/
 

Redsmokky

Client
Joined
Oct 6, 2015
Messages
319
Reaction score
197
Points
43
Спасибо, отличный вариант, я привязывал папку с проектами к облаку, но это не очень удобно, постоянно шуршит синхронизация и иногда сыплются excel_таблицы, а из архива с датой вытащить не проблема)
 

DenisK

Client
Joined
Jun 28, 2016
Messages
591
Reaction score
289
Points
63

Tuw

Client
Joined
Sep 7, 2014
Messages
441
Reaction score
150
Points
43
p.s. многие пишут, что мол не стоит доверять и бекапить файлы приватные, а я ставлю очень длиннный и сложный пасс на архив и бекаплю.)
 

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,652
Points
113
можно по паролю заархивировать?
 

Lord_Alfred

Client
Joined
Oct 9, 2015
Messages
3,916
Reaction score
3,877
Points
113
можно по паролю заархивировать?
Да, в аргументах нужно дописать через пробел (без фигурных скобок):
Code:
-p[пароль]
Описание:
p[пароль] - Указать пароль шифрования архива
 
Last edited:

deopl

Client
Joined
Dec 6, 2011
Messages
675
Reaction score
128
Points
43
Вот почему так всегда?
Нормальные темы внеконкурса, а всякий публичный, рекламный шлак в конкурсе.

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

vierasen

Client
Joined
Dec 10, 2015
Messages
588
Reaction score
279
Points
63
У меня все гораздо проще, есть папка гугл драйва и все файлы шаблонов находятся там как одновременно на всех дедиках, да идет синхронизация, но если требуется файлы с разных мест обрабатывать выношу просто данный шаблон в необновляемую папку.
 

cafen

Client
Joined
Feb 23, 2016
Messages
27
Reaction score
10
Points
3
Я использую BackUp32 , бесплатная, портабл. сделана в 2001 году, и до сих пор работает на win7.
 
Last edited:

Mahno

Client
Joined
May 16, 2015
Messages
440
Reaction score
93
Points
28
Я юзаю два бэкапщика + облако в mega.nz. Все кучеряво. Главное когда бэкапишь, все стабильно. А когда не бэкапишь, все улетает вникуда. Закон подлости
 
  • Thank you
Reactions: GreenWay

Moonwalker

Client
Joined
Mar 16, 2016
Messages
1,814
Reaction score
1,412
Points
113
Подумайте и решите как делать резервные копии БД (mysql, postgresql, mssql), если вы используете их.
Кто-нибудь домашнее задание выполнил? Просто хотелось как раз в пару шаблонов по обновлению остатков в интернет-магазинах напрямую через БД добавить бэкап базы, но пока так и не понял, как это реализовать (без захода в phpMyAdmin, конечно).
Может, есть какие-то прямые sql-запросы, которые создавали бы бэкап и возвращали файл? ))
 

Lord_Alfred

Client
Joined
Oct 9, 2015
Messages
3,916
Reaction score
3,877
Points
113
Может, есть какие-то прямые sql-запросы, которые создавали бы бэкап и возвращали файл? ))
На *nix системах в пакете mysql-server есть утилита командной строки mysqldump, которая делает дамп выбранной БД в файл. Скорее всего и для win системы есть такая, но точно не скажу, т.к. не пользовался.
 

Lord_Alfred

Client
Joined
Oct 9, 2015
Messages
3,916
Reaction score
3,877
Points
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. Прописать задачу в планировщике, как написано в первом посте.
 

Attachments

GreenWay

Client
Joined
May 11, 2012
Messages
433
Reaction score
140
Points
43
Блииин, на ночь оставил пару шабов на post-get запросах выполняться - утром ноут шуршал, но экран не светился. После перезагрузки - вроде как битые сектора на жестком - система не запускается. Нашел карман - карман видел системный, медийный, а вот диск с Zenno не видел - а там все шабики, и заготовки и прочее по мелочи. Подождал еще пару часов - раздуплился карман и обнаружил таки диск с zenno. Все удалось вытащить.
Так что СПАСИБО ТС за решение, наставил облаков и настроил копирование, при этом удалив все лишнее (было много недопощенных файликов и прочего мусора)
Так что...
TuQ5iHE.jpeg
 

Lord_Alfred

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

Lord_Alfred

Client
Joined
Oct 9, 2015
Messages
3,916
Reaction score
3,877
Points
113

Lord_Alfred

Client
Joined
Oct 9, 2015
Messages
3,916
Reaction score
3,877
Points
113
Не смог удержаться, чтобы не запостить это тут)

 

z@jivalo

Client
Joined
Dec 27, 2016
Messages
800
Reaction score
179
Points
43
Не смог удержаться, чтобы не запостить это тут)
а причина какая почему сервак упал?
А в облаке храните бекапы ?
 

Lord_Alfred

Client
Joined
Oct 9, 2015
Messages
3,916
Reaction score
3,877
Points
113
А в облаке храните бекапы ?
Да, на яндекс.диске все шаблоны зенки + БД) С момента написании этой статьи у меня так - ни разу не подвело
 

myweb101

Client
Joined
Apr 29, 2013
Messages
175
Reaction score
30
Points
28
Конечно красиво написано, но лучше делать это Acronis, можно создавать инкрементные и фулл бекапы.
 

Estrys

Пользователь
Joined
Sep 15, 2016
Messages
45
Reaction score
42
Points
18
чем Яндекс диск лучше флешка
Вон пример с запретом Яндекс.... Все может случится, а 2 раза в неделю воткнуть флешку и все ок.
 
  • Thank you
Reactions: Nick

z@jivalo

Client
Joined
Dec 27, 2016
Messages
800
Reaction score
179
Points
43
только диверсификация своих копии, поможет спасти файлы.
Если хранить в 2-3 местах одновременно вероятность что все три места хранения одновременно испортятся, мало вероятна
 

Lord_Alfred

Client
Joined
Oct 9, 2015
Messages
3,916
Reaction score
3,877
Points
113
Чуть обновил бекапилку баз данных mysql: теперь временные файлы (не заархивированные sql дампы) не будут сохраняться в под-директории яндекс.диска / дропбокса / гугл драйва.
А то я заметил, что у меня место на яндекс.диске, куда бекаплюсь как-то очень быстро убегает: оказывается, что при создании этих временных дампов перед архивацией они тоже успевают улететь в облако и потом сразу же оттуда удаляются, попадая в "корзину" на яндекс диске, а это занимает место. Сделал чтоб они сохранялись в папке на диске C:

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

MaxLucky

Client
Joined
Aug 13, 2017
Messages
213
Reaction score
16
Points
18
Очень удобно, спасибо. Как раз искал решение, менее громоздкое, чем работа с программами, типа acronis.
 

KitKat21

Client
Joined
May 2, 2017
Messages
268
Reaction score
192
Points
43
очень полезно, спасибо!

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

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

Lord_Alfred

Client
Joined
Oct 9, 2015
Messages
3,916
Reaction score
3,877
Points
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: проверьте после тестового запуска бекапа - всё ли корректно забекапилось, особенно плагины, если используете их!
 

Attachments

Last edited:

Sanekk

Client
Joined
Jun 24, 2016
Messages
999
Reaction score
390
Points
63
Если нужно сделать бэк из нескольких директорий в один архив,то:
  1. Создайте в папке с батником файл backup.lst
  2. Пропишите в батнике название файла в таком виде @backup.lst вместо пути к папке с бекапом
  3. В файле backup.lst с новой строки пропишите путь к директориям которые нужно забекапить
43977
 

Lord_Alfred

Client
Joined
Oct 9, 2015
Messages
3,916
Reaction score
3,877
Points
113
Написал подробную пошаговую инструкцию по настройке резервного копирования данных с серверов в S3.

https://t.me/Lord_Alfred/99

 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)