Страница 1 из 2

Скрипт резервного копирования OS

Добавлено: 11 апр 2013, 14:44
CrazyLamer
Написал скрипт для архивирования OS.
Cкрипт состоит из files.exe + 7z.exe +7z.dll + pre_start.tpl.bat, и создаёт ещё 7 дополнительных файлов *.ini с переменными в папке из которой запускается.

Что умеет скрипт:
При первом запуске получает все необходимые переменные, пишет их в конфигурационные файлы в папку из которой запускается и делает бекап в корень папки OS.

Что как делается:
1) При запуске OS, скрипт получает запущенный в данный момент модуль MySQL или Maria (другие БД не умеет) и ищет в нём mysqldump.exe
2) Делает дамп всех баз (в том числе системные) по средствам mysqldump.exe в папку с доменами
3) Архивирует папки и файлы: Папка с доменами, папки "userdata\profiles", "userdata\config" и файл "userdata\pre_start.tpl.bat" в корень папки OS с имененем "YYYYMMDD%_%HHMMSS"

После первого запуска в конфигах можно изменять настройки, что и куда класть.

Для удобства использования, я скомпилил скрипт в exe, положил в "progs>backup>files" и запускается из меню OS>Программы, скрипт у себя в папке "files" создаёт все конфиги, и нигде не мусорит, сам скрипт самодостаточен и портабелен.

Установка:
1) распаковать папку Progs в корень OpenServer
2) pre_start.tpl.bat положить в OpenServer\userdata\
3) Перезапустить сервер
4) Запустить из меню OS>Программы>Backup>Files

После первого запуска отредактировать настройки при необходимости.
Настройки:
1) backup.ini
Путь до папки с бэкапами. Стираем всё что есть, пишем в первую строку нужный путь, например "D:\backup\os\" слеш в конце обязателен.
Папка должна существовать, скрипт не создаст.

2) dir_dump.ini
Куда делаем дамп MySQL, по умолчанию в корень папки с доменами (потом её архивируем)
Папка должна существовать, скрипт не создаст.

3) dir_for_backup.ini
Список директорий и файлов для архивации.
В нём есть коментарии, можно редактировать как угодно, главное правило: 1 файл или папка - 1 строка.

4)parameters.ini
Параметры MySqlDump по умолчанию: localhost, root без пароля, все базы (в том числе служебные)
Пример для стандартного пользователя mysql с паролем mysql и нескольких баз данных (-h127.0.0.1 -umysql -pmysql -B database1 database2 database3)

Остальные файлы менять бесполезно, они пересоздаются при каждом запуске сервера.

Для тех кто захочет запускать из папки отличной от progs>backup>files придётся перед первым запуском поправить "userdata\pre_start.tpl.bat" так как OS знать не знает, что у вас из какой-то папки, какой-то скрипт запускается, а без переменных от OS скрипт работать не будет.

Состав:
7z.exe и 7z.dll это файл архиватора 7zip версии 9.20 (Можно скачать с оф сайта http://www.7-zip.org/ )
Files.exe это BAT скрипт скомпиленный в EXE программой взятой от сюда (http://f2ko.de/programs.php?lang=en&pid=b2e)
Invis_Files.exe такойже скрипт, но выполняется тихо, без каких либо окон. (Удобно использовать с планировщиком)
pre_start.tpl.bat обычный батник, для получения переменных от OS.

Отсутствие бэкдоров, вирусов и прочего зоопарка гарантирую.
Скачать:
Обновлено 22.07.2013 (добавлена библиотека 7z.dll)
http://ge.tt/13LaXTm/v/0
http://yadi.sk/d/tmQY0ZYJ74BrV

Контрольные суммы:
MD5: E13F66878C9B59D60E54D3226C23137F
SHA-1: BD0FE5C834463E2C2225E447D315F402D7EA2B16

Есть вопросы, спрашивайте, отвечу по мере возможности.
P.S. Кому нужно, могу дать исходник, пишите в личку.

Добавлено: 27 апр 2013, 06:10
oilmonster
Благодарю за пост и труд! Как раз то что искал! :ugeek:

первый раз поставил криво, не дочитал что файл надо закинуть в userdata/ пришлось все снести и заново поставить.

Теперь все работает бэкапы бэкапяться...

Добавлено: 27 апр 2013, 12:08
CrazyLamer
Пользуйтесь на здоровье, рад что хоть кому-то пригодилось.

Добавлено: 21 июл 2013, 20:48
seonist
Спасибо огромное!
При запуске Error: 7-zip cannot find the code that works with arhives
Подскажите, как лечится?

Добавлено: 21 июл 2013, 23:47
CrazyLamer
seonist писал(а):Спасибо огромное!
При запуске Error: 7-zip cannot find the code that works with arhives
Подскажите, как лечится?
Спасибо за ошибку.
7z для работы нехватает библиотеки 7z.dll.
Варианты:
1) Можно установить 7z на компьютер.
2) Положить 7z.dll в папку "progs>backup>files". (http://yadi.sk/d/VDSZTCFO73oHf)
3) Подождать до завтра, я с утра обновлю архивы, можно будет перекачать и всё заработает. Как обновлю отпишу тут.

Добавлено: 22 июл 2013, 05:03
seonist
Спасибо. Воспользовался вариантом №2. Заработало :D

Добавлено: 22 июл 2013, 10:05
CrazyLamer
Архивы обновил, можно пользоваться.

Добавлено: 22 июл 2013, 19:19
seonist
2-й день юзаю эту утилиту. Мало конечно, чтобы делать однозначные выводы, но ИМХО все просто и удобно. Было бы неплохо рассмотреть Максиму возможность включения этого скрипта в следующие релизы OS (если конечно автор не будет против).
P.S. Автору отдельный, огромный респектище :!:

Добавлено: 22 июл 2013, 21:45
CrazyLamer
У Максима есть этот батник, я перед созданием этого поста ему его показывал.
Да и нет в нём (в скрипте) ничего сложного.
Я предлагал когда-то максиму написать нечто подобное чтоб входило в состав OS, но моё предложение прошло мимо.
В сегодняшнем виде включать в состав сервера не стоит, так как это так на коленке собранный костыль, нужно писать полоценный бекап, чтоб хотяб ошибки выводил в случае неудачного копирования, желательно чтоб ещё инкрименты поддерживал. Но мои позания в программировании пока слишком малы, чтоб написать такое. Поэтому сделал как умел, для себя, потом решил поделиться. Есть ещё идея прикрутить возможность писать бекапы на http://mega.co.nz постредствам консольной утилиты http://megatools.megous.com/ Если кому нибудь ещё это нужно, могу сделать.

Добавлено: 23 июл 2013, 13:23
seonist
А вот такой вопрос возник в процессе: У меня 2 разные БД с 2-мя разными пользователями, как это прописать в настройках parameters.ini?