резервное копирование Главная > Вебмастеру > Создание своего сайта > Резервное копирование с помощью bat-файла

Резервное копирование с помощью bat-файла

Мужчина в суконном на вате пиджаке был совершенно подавлен служебной обстановкой,
запахом ализариновых чернил, часами, которые часто и тяжело дышали,
а в особенности строгим плакатом «Сделал своё дело — и уходи».
Хотя дела своего мужчина в пиджаке ещё и не начинал, но уйти ему уже хотелось.
«12 стульев», Ильф и Петров.
9 сентября 2007

    Недавно у меня появилась необходимость иметь резервную копию одной базы данных за последние несколько дней. Одним из условий было реализовать это всё без использования сторонних или самописных программ. После недолгих размышлений было решено реализовать это с помощью стандартных dos-овских команд, описанных в .bat-файле.

    Те, кто умеют писать BAT-файлы, могут дальше не читать в принципе. Для остальных поясню, что все строчки, начинающиеся с rem, являются комментариями. Следовательно, они не выполняются и вы можете копировать код целиком.

    Алгоритм очень простой. У нас есть две папки archive_new, где хранится архив за вчера, и archive_old, где хранится архив за позавчера. Таким образом получаем следующее:

rem Удаляем папку archive_old
rmdir /s /q \\server\archive\archive_old
rem Переименовываем папку archive_new в archive_old
ren \\server\archive\archive_new archive_old
rem Создаём директорию archive_new
mkdir \\server\archive\archive_new
rem Копируем файлы с базой данных в папку archive_new
copy /y *.base \\server\archive\archive_new

    Всё. При таком алгоритме, выполняющемся раз в день, мы будем иметь две резервные копии: за вчера и позавчера.

    Этот простейший алгоритм идеально подходит, когда нужно просто копировать файлы в другое место. У него есть два минуса.

    Во-первых базы могут быть большими.

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

    Два этих минуса легко решаются путём архивирования баз данных и задания переменных для относительных путей.

rem Объявляем переменные для названия архива и пути архивной папки на сервере
rem Вместо названия архива будет использована текущая дата
SET archive_name=%date%.rar
SET server_dir=\\server\archive\
rem Удаляем папку archive_old
rmdir /s /q %server_dir%\archive_old
rem Переименовываем папку archive_new в archive_old
ren %server_dir%\archive_new archive_old
rem Создаём директорию archive_new
mkdir %server_dir%\archive_new
rem Архивируем все файлы кроме *.exe и *.bat
rar a -r -m5 -x*.bat -x*.exe %archive_name%
rem Копируем архив с базой данных в папку archive_new
copy /y %archive_name% %server_dir%\archive_new\
rem Перемещаем архив
move %archive_name% %serev_dir%\archive_new\

    NB: для того, что бы работала строчка с архивированием, вам понадобиться файл «rar.exe» из стандартной поставки WinRar'а.

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

rem Объявляем переменные для названия архива и пути архивной папки на сервере
SET archive_name=%date%.rar
SET server_dir=\\server\archive\
SET temp_dir=\\temp\
rem Удаляем папку archive_old
rmdir /s /q %server_dir%\archive_old
rem Переименовываем папку archive_new в archive_old
ren %server_dir%\archive_new archive_old
rem Создаём директорию archive_new
mkdir %server_dir%\archive_new
rem Копируем файлы с базой данных в папку temp
copy /y *.base %temp_dir%
rem Архивируем все файлы в папке temp, кроме *.exe и *.bat
rar a -r -m5 -ep1 -x*.bat -x*.exe %archive_name% %temp_dir%
rem Перемещаем архив в папку archive_new
move %archive_name% %server_dir%\archive_new\
rem Очищаем содержимое папки temp
del /q %temp_dir%*.*

    Вот в общем-то и всё. Теперь только осталось сделать расписание для выполнение этого .BAT-файла и можно не беспокоиться о сохранности базы данных сайта.

    P.S. Для тех, кто хочет поизвращаться, большинство описанных здесь вещей можно сделать через ключи в RAR'е.

Автор: Хитрый Лис.

 

⇓ 

Поделись ссылкой на Seoded.ru с друзьями, знакомыми и собеседниками в соцсетях и на форумах! А сам сайт добавь в закладки! Так победим.

Поделиться ссылкой на эту страницу в:

Полезные ссылки:

Как зарабатывают на играх в Интернете? Как молодая мама может подработать в Интернете?

Ещё материалы по этой теме:

Структура HTML-документа Три правила дизайна Поле, русское поле Гордиев узел навигации: выкинем первые уровни Семантическая вёрстка в HTML
основан в 2008 г. © Все права на материалы сайта Seoded.ru принадлежат Алексею Вострову.
Копирование (полное или частичное) любых материалов сайта возможно только с разрешения автора и при указании ссылки на источник.
Ослушавшихся находит и забирает Бабайка!