Category Archives: Резервное копирование

Резервное копирование баз данных Postgresql в Linux

У нас в ресурсе уже описано много способов реализации резервного копирования информации. Продолжим данную тему. Теперь, рассмотрим резервное копирование баз данных Postgresql в операционной системе Linux.

Вот вариант резервного копирования для 3-х баз данных:

Сохранение бекапа на удаленном сервере по ssh

В условиях отсутствия локального или сетевого тома для хранения резервных копий (несколько натянутое условие, но мне пришлось столкнуться), пришлось доработать скрипт; отличие от изначального скрипта — результат дампа не сохраняется локально, а передаётся на удалённый сервер по ssh и там же производится удаление устаревших файлов:

Предварительно надо создать авторизационный ключ для пользователя (в приведённом скрипте пользователь — backup) на сервере резервного хранения и разместить приватный ключ в каталоге, доступном на чтение только пользователю root (в приведённом скрипте ключ лежит в файле /root/nbs01/backup) и настроить sshd удалённого сервера на авторизацию по ключам — об этом весьма подробно написано, например, в этой статье.
Да, трафик будет весьма серьёзным, несмотря на возможность сжатия ssh, но конкретно данное решение работает в виртуальной среде, где 3 гигабайта дампа передаются примерно за полторы минуты, что вполне приемлемо.

Восстановление базы данных из дампа

Тут всё просто — если владелец (имя «роли входа» или пользователь postgresql, указанный владельцем изначальной БД) уже существует, но нет самой базы данных, команда восстановления будет выглядеть примерно так:

/usr/pgsql-9.2/bin/pg_restore -e -j 8 -U root -W -d upp /root/files/upp-2013-11-20.pgdump

Восстановление будет выполнено в 8 потоков (для ускорения процедуры, в документации pgsql рекомендуется использовать потоков не меньше, чем доступно ядер CPU) от имени пользователя root с интерактивным вводом пароля. Файл /mnt/arc/1C8/upp-2013-11-20-09-45-51.pgdump — распакованный .gz из второго примера или изначальный дамп из первого. Целевая база (в данном примере — upp) должна уже существовать, и быть созданной из template0.

Если пользователя-владельца создать нет возможности/желания, можно добавить ключ --no-owner да и вообще, почитать что пишут на http://www.postgresql.org/docs/9.3/static/backup.html

И ещё, если на создание дампа в пару гигабайт (несжатых) уходит пара минут, то на восстановление данного дампа в один поток (если не указать ключ распараллеливания — «-j 8» в примере выше) потребуется уже полчасика, на том же железе. А если использовать текстовые дампы (не указать «-F c» при создании дампа, и для восстановления использовать стандартную команду psql dbname < infile или использовать конвейер типа pg_restore infile.pgdump | psql), времени потребуется ещё больше — данные методы целесообразно использовать не для полного восстановления, а когда требуется восстановить только определённую часть базы данных.

Для восстановления БД с удалённой машины (сервера хранилища) можно использовать конструкцию вида:

zcat upp-2014-10-22-07-30-03.pgdump.gz | ssh 192.168.1.2 «psql upp-copy > /root/files/log-create»

Здесь zcat — команда вывода содержимого архива на stdout, upp-2013-10-22-07-30-03.pgdump.gz — имя восстанавливаемого архива, 192.168.1.2 — сервер postgresql, на который восстанавливаем дамп, upp-copy — имя базы данных, в которую разворачиваем дамп (на момент восстановления должна существовать, быть пустой, и иметь необходимые права для «роли входа», использованной в изначальной БД); чтобы не засорять экран выводом psql о процессе создания объектов, перенаправим вывод в файл (сообщения об ошибках, в случае их наличия, будут выводиться в терминал). В данном примере предполагается, что у пользователя, от имени которого мы подключаемся по ssh к серверу postgres есть право работать с базами данных, поэтому авторизация в БД не описана.

Резервное копирование MySQL

Вариант для реализации резервного копирования MySQL:

 

Еще один способ резервного копирования Postgresql

 
Источники: http://www.bubnov.su/stati/rezervnoe-kopirovanie-baz-dannyh-postgresql

http://habrahabr.ru/post/82278/

Скрипт автоматического резервного копирования 1С8

Автор: Рудюк С . А.
https://corp2.net

E-Mail: rs@corp2.net

Как показала практика, лучше всего делать резервные копии баз данных 1С с помощью самой 1С, а не с помощью средств базы данных. Т.к. по не понятным причинам бекап сделанный с помощью того же Postgresql, после восстановления не корректно работает.
Более того, бекап желательно делать ежедневно. Понятное дело, вручную делать резервные копии информации дело неблагодарное, поэтому всегда хочется автоматизировать данный процесс.
echo off

for /f «tokens=1-4 delims=/ » %%i in («%date%») do (
 set dow=%%i
 set month=%%j
 set day=%%k
 set year=%%l
 )
set datestr=%month%_%day%_%year%
echo datestr is %datestr%

 set BACKUP_FILE=dp3_%date%.backup

rem %datestr%.backup

 echo backup file name is %BACKUP_FILE%
 SET PGPASSWORD=ВАШ ПАРОЛЬ
echo on

net stop «1C:Enterprise 8.2 Server Agent»
net start «1C:Enterprise 8.2 Server Agent»
«C:\Program Files\1cv82\common\1cestart.exe» CONFIG /S «localhost\\dp3» /N «ВАШ ПОЛЬЗОВАТЕЛЬ» /P «ВАШ ПАРОЛЬ» /DumpIB «C:\backups\backup_dp\dp_3_%date%.dt» /AU- /DisableStartupMessages

choice /n /t 180 /d y

net use m: \192.168.3.1\backup /u:ПОЛЬЗОВАТЕЛЬ_СЕТЕВОГО_ДИСКА «ПАРОЛЬ ДЛЯ ПОДКЛЮЧЕНИЯ К СЕТЕВОМУ ДИСКУ»
move C:\backups\backup_dp\dp_3_%date%.dt m:\1s\dp\dp_3_%date%.dt

Объяснение к скрипту:
1. Вначале перезапускаем сервис. Т.к. если «висят» пользователи — резервное копирование не удастся.
2. Запускаем не видимый процесс 1С и формируем бекап.
3. После истечения времени, достаточного для формирования бекапа 1С — перемещаем файл на другой накопитель.

Автор: Рудюк С . А. https://corp2.net

Услуги программирования в 1С. Киев

3D визуализация и дизайн

Резервное копирование информации между серверами. Защита информации от рейдеров

Автор: Рудюк С . А.
https://corp2.net

E-Mail: rs@corp2.net

В сегодняшнее псевдо-правовое время, никто не может быть спокоен за безопасность техники и информации на ней. Даже если Вы запрячете информацию в бункер, к Вам могут прийти право-охранительные органы, взломать двери и достать оттуда всю технику. И сделать этом могут без выдвижения обвинения, а лиш назвав Вас «свидетелем». При этом, свидетелем какого дела и почему изымается — могут не объяснять. Адвокатов — могут не пускать. Подобные ситуации в Украине — не редкость. И в последнее время, в связи с происходящей неразберихой в стране — участились.

Изъятие информации — это один из самых серьезных и самых дешевых способов удара по предприятию. Многие компании, после таких действий вынуждены распускать персонал и закрывать свою деятельность. Т.к. даже начислить зарплату или отчитаться в налоговой не могут — вся информация «изъята». Что же делать, если работать приходится в псевдо-прововом государстве ?
Храните информацию распределенно по всему миру, синхронизируйте её между собой, храните в недоступных местах для потенциальных рейдеров и рекетиров.

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

Структура сети

Итак, рассмотрим примерную структуру хранения информации.

Здесь мы имеем структуру из 5 точек, которые синхронизируются друг с другом через интернет. Данная синхронизация может происходить в разное время, с применением динамических ip-адресов и использованием прокси-серверов из-за чего «вычислить» и уничтожить все узлы сразу — сравнительно проблематично. Не говоря о том, что сервера могут находиться в разных странах, числиться за разными людьми и управляться разными администраторами.
Количество узлов делается настолько большим, насколько критична потеря информации и насколько высоки потенциальные потери от этого.

Структура сервера

Нужно всегда помнить, что физический доступ любого из узлов в любой момент может оказаться у злоумышленников. А это значит, что информацию нужно шифровать.
На представленной выше схеме показано схематически, как можно хранить информацию:
1. В качестве основной операционной системы используется Linux Ubuntu. Эта операционная система бесплатна, достаточно устойчива к вирусным атакам и попыткам взлома. Данная система способна работать непрерывано без перезагрузки годами. А так же постоянно обновляется и совершенствуется. Обновления Вы можете ставить не мешая работе пользователей. Словом, преимуществ очень много, перед тем же Windows.
2. Фактически в основной операционной системе ничего не хранится — только файл крипто-провайдера, в котором сохраняется вся информация.
Криптопровайдер может выглядеть в виде любого файла, например, в виде виде, свопа и т.п. Файл может иметь как статический (более стабильно работает), так и динамический размер.
Можно использовать, например, контейнер truecrypt. Такой контейнер может работать в различных операционных системах: Windows, Linux, MacOS. И это очень хорошо, т.к. позволяет переписать криптопровайдер с одного компьютера на другой, даже если операционные системы отличаются.
3. Внутри криптопровайдера сохраняем основную операционную систему с которой работаем. Это может быть на Ваше усмотрение, например Windows. Хотя, никто не мешает размещать Linux, MacOS и т.п.
В качестве «движка» виртуальной машины можно использовать бесплатные virtualbox или vmplayer.
4. Сама информация уже хранится вниутри виртуальной машины. И именно её бекапим на различные сервера.

Таким образом, получаем хранение в виде «матрешки». В котором за одним слоем идет другой и так может быть до бесконечности. Но, не нужно фанатизма — хватит столько слоев, как представлено на схеме 🙂

Структура накопителей информации

Накопители информации, можно подлкючать непосредственно к сетевым шлюзам, поддерживающим подключение устройств по USB. Т.к. накопители не имеют операционной системы, храним информацию в «открытом виде», но в виде архива с шифрацией :). Пароль желательно подбирать беспорядочным сочетанием английских, русских букв, а так же спец-символов и цифр. Такой пароль должен быть более 12 символов, а лучше делать более 100. Никто не ограничивает Вас в длине пароля. Чем больше пароль — тем сложней его «взломать» методом перебора даже на много-ядерных серверах.

Программная реализация

Структура серверов может быть не однородной и работать под различными операционными системами. Например, у меня часто используются Linux, Windows XP, Windows Server. Поэтому, я опишу реализацию резервного копирования для каждой из этих систем.
Так же нужно определиться с переодичностью резервного копирования. Практика показывает, что хватит полностью архивировать информацию один раз в квартал, а каждую неделю делать- инкрементный бекап (т.е. делать резервную копию изменений). Такой подход сэкономит дисковое пространство, а так же процессорное время. При этом, информация будет сохранена в полной мере.
Файловую информацию сохраняем с помощью архиватора 7zip с применением шифрации.
А информацию из баз данных сохраняем с помощью утилит соответствующей базы данных для резервного копирования с последующей архивацией бекапа с помощью 7zip с применением шифрации.
Обмен шифрованными файлами между серверами и накопителями производится через интернет по ftp или ssh.

Передача информации между серверами
Передачу информации производим с помощью утилиты curl. Данная утилита есть для всех основных операционных систем: Windows, Linux, MacOS. И это хорошо, т.к. позволяет использовать одинаковый подход в разных операционных системах.
Почитать о данной команде и найти где закачать Вы можете из Wikipedia: https://ru.wikipedia.org/wiki/CURL

Есть еще вариант — использовать wput. Но, как оказалось, данная команда хуже работает да и поддерживает меньше протоколов.

Windows XP

Обычно, данные в Windows XP — это данные обычных пользователей. Например, личные документы, фотографии и т.п.

1. Полный бекап (Производим полное резервное копирование 1 раз в квартал). Назовем его backup_inc.bat. В моем случае, скрипты для резервного копирования находятся по адресу: C:\backup_full, а сами полные бекапы сохраняются по адресу: C:\backup_full\full_arh.

echo on

echo Этот код оставил для возможности указания даты при необходимости сохранения ежедневных копий:   for /f «tokens=1-4 delims=/ » %%i in («%date%») do (
set dow=%%i
set month=%%j
set day=%%k
set year=%%l
)
set datestr=%month%_%day%_%year%
echo datestr is %datestr%

echo 1. Архивация конфигурационных файлов (Не забываем делать копии конфигурационных файлов. Ведь не хочется их заново писать…)

xcopy C:\backup_full\*.bat C:\backup_full\configs_tmp /Y
«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\full_arh\configs_tmp_rud.7z» -r -mx5 «C:\backup_full\configs_tmp» -p»ВашПарольДлинойБолее12Символов»

echo 2. Архивация Документов
«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\full_arh\docs.7z» -r -mx5 «C:\docs» -p»ВашПарольДлинойБолее12Символов»

echo ###### Архивация завершена #######

C:
cd C:\backup_full

echo II.1. Подключаюсь по ftp и изменяю названия архивов старых архивов
echo ftp> ftp_backup.txt
echo open>> ftp_backup.txt
echo IPАдресВашегоFTPСервера>> ftp_backup.txt
echo rud>> ftp_backup.txt
echo ПарольКFTP>> ftp_backup.txt
echo literal PASV>> ftp_backup.txt
echo cd КаталогНаFTP>> ftp_backup.txt
echo binary>> ftp_backup.txt
echo literal PASV>> ftp_backup.txt

echo rename configs_tmp_rud.7z configs_tmp_rud_old.7z>> ftp_backup.txt
echo rename docs.7z docs_old.7z>> ftp_backup.txt

echo bye>> ftp_backup.txt

ftp -s:ftp_backup.txt

cd C:\backup_full

echo III.1 Копирование информации по ftp
curl -T C:\backup_full\full_arh\configs_tmp_rud.7z -u admin:ПарольОтFTP ftp://ВашFTP/КаталогНаFtp/
curl -T C:\backup_full\full_arh\docs.7z -u admin:ПарольОтFTP ftp://ВашFTP/КаталогНаFtp/

2. Инкрементное резервное копирование (производим 1 раз в неделю). Полный архив обязательно должен оставаться на локальном компьютере, т.к. при формировании инкрементного архива производится сравнение файлов с файлами в полном архиве.
Назовем инкрементное резервное копирование backup_inc.bat.

echo on

for /f «tokens=1-4 delims=/ » %%i in («%date%») do (
set dow=%%i
set month=%%j
set day=%%k
set year=%%l
)
set datestr=%month%_%day%_%year%
echo datestr is %datestr%

echo 1. Архивация конфигурационных файлов
xcopy C:\backup_full\*.bat C:\backup_full\configs_tmp /Y
«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\inc_arh\configs_tmp_rud_changes.7z» -r -mx5 «C:\backup_full\configs_tmp» -p»ВашПарольДлинойБолее12Символов»

echo 2. Архивация Исходных файлов Корпорация 2
«C:\Program Files\7-Zip\7z.exe» u «C:\backup_full\full_arh\docs.7z» -u- -up3q3r2x2y2z0w2!C:\backup_full\inc_arh\docs_changes.7z «C:\docs» -p»ВашПарольДлинойБолее12Символов»

echo ###### Архивация завершена #######

C:
cd C:\backup_full

echo II.1. Подключаюсь по ftp и изменяю названия архивов старых архивов
echo ftp> ftp_backup.txt
echo open>> ftp_backup.txt
echo ПутьКFTP>> ftp_backup.txt
echo rud>> ftp_backup.txt
echo ПарольКFTP>> ftp_backup.txt
echo literal PASV>> ftp_backup.txt
echo cd КаталогНаFTP>> ftp_backup.txt
echo binary>> ftp_backup.txt
echo literal PASV>> ftp_backup.txt

echo rename configs_tmp_rud_changes.7z configs_tmp_rud_changes_old.7z>> ftp_backup.txt
echo rename docs_changes.7z docs_changes_old.7z>> ftp_backup.txt

echo bye>> ftp_backup.txt

ftp -s:ftp_backup.txt

cd C:\backup_full

echo III.1 Копирование информации по ftp
curl -T C:\backup_full\inc_arh\configs_tmp_rud_changes.7z -u admin:ПарольКFTP ftp://ВашFTP/КаталогНаFTP/
curl -T C:\backup_full\inc_arh\docs_changes.7z -u admin:ПарольКFTP ftp://ВашFTP/КаталогНаFTP/

3. Устанавливаем планировщик на выполнение задач. Для полного бекапа — 1 раз в квартал. Для инкрементного резервного копирования — 1 раз в неделю. Бекап делаем ночью — чтоб не мешать работе пользователей (правда пользователи в этом случае не должны выключать компьютер наночь).

Зададим задачу выполнения скрипта полного резервного копирования 1 раз в  квартал.
Запускаем меню:
     Пуск — Программы — Стандартные — Служебные — Назначение задания — Добавить Задание

 

 

 

 

 

Задание для инкрементного резервного копирования делаем аналогично предыдущему пункту только для файла backup_full.bat и за исключением 2-х пунктов, определяющих время срабатыварния:

 

Windows Server
На серверной версии Windows могут находиться базы данных, большое количество документов, конфигурации 1С и т.п.
По аналогии с WindowsXP сохраняем скрипты и бекапе в каталог: C:\backup_full.
Файл для полного резервного копирования backup_full.bat:

echo on

for /f «tokens=1-4 delims=/ » %%i in («%date%») do (
set dow=%%i
set month=%%j
set day=%%k
set year=%%l
)
set datestr=%month%_%day%_%year%
echo datestr is %datestr%

echo 1. Архивация конфигурационных файлов
xcopy C:\backup_full\*.bat C:\backup_full\configs_tmp /Y
«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\full_arh\configs_tmp_fd.7z» -r -mx5 «C:\backup_full\configs_tmp» -p»ВашПарольНаБолее12Символов»

echo 2. Архивация 1С
«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\full_arh\1cbase.7z» -r -mx5 «C:\1cbase» -p»ВашПарольНаБолее12Символов»

echo 3. Архивация документов
«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\full_arh\docsfd.7z» -r -mx5 «C:\Docs» -p»ВашПарольНаБолее12Символов»

echo 3. Резервное копирование базы данных в MsSQL
SQLCMD -S (local) -E -Q «BACKUP DATABASE oberon TO DISK = ‘C:\backup_full\full_arh\oberone_backup.bak’ WITH INIT, NOFORMAT, SKIP, NOUNLOAD»
«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\full_arh\oberone_backup.7z» -r -mx5 «C:\backup_full\full_arh\oberone_backup.bak» -p»ВашПарольНаБолее12Символов»

echo ###### Архивация завершена #######
C:
cd C:\backup_full

echo II.1. Подключаюсь по ftp и изменяю названия архивов старых архивов
echo ftp> ftp_backup.txt
echo open>> ftp_backup.txt
echo ВашFTP>> ftp_backup.txt
echo ЛогинНаFTP>> ftp_backup.txt
echo ПарольНаFTP>> ftp_backup.txt
echo literal PASV>> ftp_backup.txt
echo cd КаталогНаFTP>> ftp_backup.txt
echo literal PASV>> ftp_backup.txt
echo literal PASV>> ftp_backup.txt

echo rename configs_tmp_fd.7z configs_tmp_fd_old.7z>> ftp_backup.txt
echo rename 1cbase.7z 1cbase_old.7z>> ftp_backup.txt
echo rename docsfd.7z docsfd_old.7z>> ftp_backup.txt
echo rename oberone_backup.7z oberone_backup_old.7z>> ftp_backup.txt

echo bye>> ftp_backup.txt

ftp -s:ftp_backup.txt

cd C:\backup_full

echo III.1 Копирование информации по ftp
curl -T C:\backup_full\full_arh\configs_tmp_fd.7z -u Логин:Пароль ftp://ВашFTP/КаталогВFTP/
curl -T C:\backup_full\full_arh\1cbase.7z -u Логин:Пароль ftp://ВашFTP/КаталогВFTP/
curl -T C:\backup_full\full_arh\docsfd.7z -u Логин:Пароль ftp://ВашFTP/КаталогВFTP/
curl -T C:\backup_full\full_arh\oberone_backup.7z -u Логин:Пароль ftp://ВашFTP/КаталогВFTP/

Файл для инкрементного резервного копирования backup_inc.bat:

echo on
echo Инкрементное архивирование
for /f «tokens=1-4 delims=/ » %%i in («%date%») do (
set dow=%%i
set month=%%j
set day=%%k
set year=%%l
)
set datestr=%month%_%day%_%year%
echo datestr is %datestr%

echo 1. Архивация конфигурационных файлов
xcopy C:\backup_full\*.bat C:\backup_full\configs_tmp /Y
«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\inc_arh\configs_tmp_fd_changes.7z» -r -mx5 «C:\backup_full\configs_tmp» -p»ВашПарольБолее12Символов»

echo 2. Архивация 1С
«C:\Program Files\7-Zip\7z.exe» u «C:\backup_full\full_arh\1cbase.7z» -u- -up3q3r2x2y2z0w2!C:\backup_full\inc_arh\1cbase_changes.7z «C:\1cbase» -p»ВашПарольБолее12Символов»

echo 3. Архивация документов
«C:\Program Files\7-Zip\7z.exe» u «C:\backup_full\full_arh\docsfd.7z» -u- -up3q3r2x2y2z0w2!C:\backup_full\inc_arh\docsfd_changes.7z «C:\Docs» -p»ВашПарольБолее12Символов»

echo 3. Резервное копирование MsSQL
SQLCMD -S (local) -E -Q «BACKUP DATABASE oberon TO DISK = ‘C:\backup_full\inc_arh\oberone_backup.bak’ WITH INIT, NOFORMAT, SKIP, NOUNLOAD»
«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\inc_arh\oberone_backup_changes.7z» -r -mx5 «C:\backup_full\inc_arh\oberone_backup.bak» -p»ВашПарольБолее12Символов»

echo ###### Архивация завершена #######

C:
cd C:\backup_full

echo II.1. Подключаюсь по ftp и изменяю названия архивов старых архивов
echo ftp> ftp_backup.txt
echo open>> ftp_backup.txt
echo ВашFTP>> ftp_backup.txt
echo ЛогинFTP>> ftp_backup.txt
echo ПарольFTP>> ftp_backup.txt
echo literal PASV>> ftp_backup.txt
echo cd КаталогНаFTP>> ftp_backup.txt
echo binary>> ftp_backup.txt
echo literal PASV>> ftp_backup.txt

echo rename configs_tmp_fd_changes.7z configs_tmp_fd_changes_old.7z>> ftp_backup.txt
echo rename 1cbase_changes.7z 1cbase_changes_old.7z>> ftp_backup.txt
echo rename docsfd_changes.7z docsfd_changes_old.7z>> ftp_backup.txt
echo rename oberone_backup_changes.7z oberone_backup_changes_old.7z>> ftp_backup.txt

echo bye>> ftp_backup.txt

ftp -s:ftp_backup.txt

cd C:\backup_full

echo III.1 Копирование информации по ftp
curl -T C:\backup_full\inc_arh\configs_tmp_fd_changes.7z -u ЛогинFTP:ПарольFTP ftp://ВашFTP/КаталогНаFTP/
curl -T C:\backup_full\inc_arh\1cbase_changes.7z -u ЛогинFTP:ПарольFTP ftp://ВашFTP/КаталогНаFTP/
curl -T C:\backup_full\inc_arh\docsfd_changes.7z -u ЛогинFTP:ПарольFTP ftp://ВашFTP/КаталогНаFTP/
curl -T C:\backup_full\inc_arh\oberone_backup_changes.7z -u ЛогинFTP:ПарольFTP ftp://ВашFTP/КаталогНаFTP/

По аналогии с WindowsXP настраиваем задания в Windows Server на выполнение скрипта полного резервного копирования 1 раз в квартал и скрипта инкрементного резервного копирования — 1 раз в неделю.

Linux Ubuntu
Сервера частно работаю на операционной системе Linux. Поэтому, тут есть и сайты и базы данных и конфигурационные файлы. Все это желательно сохранять. Т.к. даже если клиент не заботится о резервном копировании своих сайтов, то провайдер или администратор сервера должен все равно о этом заботиться.

Делаем изменения в /etc/crontab, чтоб бекап выполнялся один раз в квартал:
# m h dom mon dow user<>command
17 *<—>* * *<->root    cd / && run-parts —report /etc/cron.hourly
25 6<—>* * *<->root<—>test -x /usr/sbin/anacron || ( cd / && run-parts —report /etc/cron.daily )
47 6<—>* * 7<->root<—>test -x /usr/sbin/anacron || ( cd / && run-parts —report /etc/cron.weekly )
52 6<—>1 * *<->root<—>test -x /usr/sbin/anacron || ( cd / && run-parts —report /etc/cron.monthly )
52 6<—>3 * *<->root<—>test -x /usr/sbin/anacron || ( cd / && run-parts —report /etc/cron.kvartal )

Создаем каталог: etc/cron.kvartal. В него записываем скрипт backup_full и устанавливаем атрибуты на выполнение. Этот файл будет производить полное резервное копирование 1 раз в квартал. Содержимое этого файла:
Скрипт полного резервного копирования записываем в файл :

#!/bin/sh

echo ############################################
echo ## Полное резервное копирование
echo ############################################

echo 1. Копирование конфигурационных файлов
cp /media/truecrypt6/backup_full/backup_full /media/truecrypt6/backup_full/configs_tmp.
cp /media/truecrypt6/backup_full/backup_inc /media/truecrypt6/backup_full/configs_tmp.
7z a /media/truecrypt6/backup_full/full_arh/configs_tmp_host.7z -r -mx5 «/media/truecrypt6/backup_full/configs_tmp» -p»ВашПарольБолее12Символов»

echo 2. Apache
7z a /media/truecrypt6/backup_full/full_arh/apache_host.7z -r -mx5 «/etc/apache2″ -p»ВашПарольБолее12Символов»

echo 3. Nginx
7z a /media/truecrypt6/backup_full/full_arh/nginx_host.7z -r -mx5 «/etc/nginx» -p»ВашПарольБолее12Символов»

echo 4. PHP
7z a /media/truecrypt6/backup_full/full_arh/php_host.7z -r -mx5 «/etc/php5″ -p»ВашПарольБолее12Символов»

echo 5. Копирование сайтов
7z a /media/truecrypt6/backup_full/full_arh/sites_host.7z -r -mx5 «/media/truecrypt1/www» -p»ВашПарольБолее12Символов»

echo 6. Копирование баз данных MySQL
mysqldump -uroot -pПарольКMySQL -A > /media/truecrypt6/backup_full/full_arh/mysqldump_host.sql
7z a /media/truecrypt6/backup_full/full_arh/mysqldump_host.7z -r -mx5 «/media/truecrypt6/backup_full/full_arh/mysqldump_host.sql» -ВашПарольБолее12Символов»

echo ###### Архивация завершена #######
cd /media/truecrypt6/backup_full

echo II.1. Подключаюсь по ftp и изменяю названия архивов старых архивов

HOST=’СерверFTP’
USER=’ЛогинКFTP’
PASSWD=’ПарольКFTP’
FILE=’file.txt’

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD

passive
cd КаталогВFTP

rename configs_tmp_host.7z configs_tmp_host_old.7z
rename apache_host.7z apache_host_old.7z
rename nginx_host.7z nginx_host_old.7z
rename php_host.7z php_host_old.7z
rename sites_host.7z sites_host_old.7z
rename mysqldump_host.7z mysqldump_host_old.7z

bye

quit
END_SCRIPT

cd /media/truecrypt6/backup_full

echo III.1 Копирование информации по ftp
curl -T /media/truecrypt6/backup_full/full_arh/configs_tmp_host.7z -u admin:ПарольКFTP ftp://СерверFTP/КаталогВFTP/
curl -T /media/truecrypt6/backup_full/full_arh/apache_host.7z -u admin:ПарольКFTP ftp://СерверFTP/КаталогВFTP/
curl -T /media/truecrypt6/backup_full/full_arh/nginx_host.7z -u admin:ПарольКFTP ftp://СерверFTP/КаталогВFTP/
curl -T /media/truecrypt6/backup_full/full_arh/php_host.7z -u admin:ПарольКFTP ftp://СерверFTP/КаталогВFTP/
curl -T /media/truecrypt6/backup_full/full_arh/sites_host.7z -u admin:ПарольКFTP ftp://СерверFTP/КаталогВFTP/
curl -T /media/truecrypt6/backup_full/full_arh/mysqldump_host.7z -u admin:ПарольКFTP ftp://СерверFTP/КаталогВFTP/

exit 0

Крипт инкрементного резервного копирования сохраняем в каталоге /etc/cron.weekly и называем, например backup_inc. Устанавливаем атрибуты 755.

Содержимое данного файла:

#!/bin/sh

echo ############################################
echo ## Инкрементное резервное копирование
echo ############################################

echo 1. Копирование конфигурационных файлов
cp /media/truecrypt6/backup_full/backup_full /media/truecrypt6/backup_full/configs_tmp.
cp /media/truecrypt6/backup_full/backup_inc /media/truecrypt6/backup_full/configs_tmp.
7z a /media/truecrypt6/backup_full/inc_arh/configs_tmp_host_changes.7z -r -mx5 «/media/truecrypt6/backup_full/configs_tmp» -p»ВашПарольБолее12Символов»

echo 2. Apache
7z a /media/truecrypt6/backup_full/inc_arh/apache_host_changes.7z -r -mx5 «/etc/apache2″ -p»ВашПарольБолее12Символов»

echo 3. Nginx
7z a /media/truecrypt6/backup_full/inc_arh/nginx_host_changes.7z -r -mx5 «/etc/nginx» -p»ВашПарольБолее12Символов»

echo 4. PHP
7z a /media/truecrypt6/backup_full/inc_arh/php_host_changes.7z -r -mx5 «/etc/php5″ -p»ВашПарольБолее12Символов»

echo 5. Копирование сайтов
7z u «/media/truecrypt6/backup_full/full_arh/sites_host.7z» -u- -up3q3r2x2y2z0w2!/media/truecrypt6/backup_full/inc_arh/sites_host_changes.7z «/media/truecrypt1/www» -p»ВашПарольБолее12Символов»

echo 6. Копирование баз данных MySQL
mysqldump -uroot -pПарольКMySQL -A > /media/truecrypt6/backup_full/inc_arh/mysqldump_host_changes.sql
7z a /media/truecrypt6/backup_full/inc_arh/mysqldump_host_changes.7z -r -mx5 «/media/truecrypt6/backup_full/inc_arh/mysqldump_host_changes.sql» -p»ВашПарольБолее12Символов»

echo ###### Архивация завершена #######
cd /media/truecrypt6/backup_full

echo II.1. Подключаюсь по ftp и изменяю названия архивов старых архивов

HOST=’СерверFTP’
USER=’ЛогинКFTP’
PASSWD=’ПарольКFTP’
FILE=’file.txt’

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD

passive
cd КаталогНаFTP

rename configs_tmp_host_changes.7z configs_tmp_host_changes_old.7z
rename apache_host_changes.7z apache_host_changes_old.7z
rename nginx_host_changes.7z nginx_host_changes_old.7z
rename php_host_changes.7z php_host_changes_old.7z
rename sites_host_changes.7z sites_host_changes_old.7z
rename mysqldump_host_changes.7z mysqldump_host_changes_old.7z

bye

quit
END_SCRIPT

cd /media/truecrypt6/backup_full

echo III.1 Копирование информации по ftp
curl -T /media/truecrypt6/backup_full/inc_arh/configs_tmp_host_changes.7z -u admin:ПарольFTP ftp://СерверFTP/КаталогНаFTP/
curl -T /media/truecrypt6/backup_full/inc_arh/apache_host_changes.7z -u admin:ПарольFTP ftp://СерверFTP/КаталогНаFTP/
curl -T /media/truecrypt6/backup_full/inc_arh/nginx_host_changes.7z -u admin:ПарольFTP ftp://СерверFTP/КаталогНаFTP/
curl -T /media/truecrypt6/backup_full/inc_arh/php_host_changes.7z -u admin:ПарольFTP ftp://СерверFTP/КаталогНаFTP/
curl -T /media/truecrypt6/backup_full/inc_arh/sites_host_changes.7z -u admin:ПарольFTP ftp://СерверFTP/КаталогНаFTP/
curl -T /media/truecrypt6/backup_full/inc_arh/mysqldump_host_changes.7z -u admin:ПарольFTP ftp://СерверFTP/КаталогНаFTP/

exit 0

Заключение
Любая система может развиваться до бесконечности. Можно добавлять новые хранилища, узлы. Так же команды резервного копирования для различных баз данных могут отличаться друг от друга. Поэтому, не исключено, что со временем в эту статью будут добавляться новые команды, индивидуальные для определенной реализации.

Автор: Рудюк С . А. https://corp2.net

3D визуализация и интерьер

Резервное копирование информации между серверами. Защита информации от рейдеров (Версия 2)

Автор: Рудюк С . А.
https://corp2.net

E-Mail: rs@corp2.net

В сегодняшнее псевдо-правовое время, никто не может быть спокоен за безопасность техники и информации на ней. Даже если Вы запрячете информацию в бункер, к Вам могут прийти право-охранительные органы, взломать двери и достать оттуда всю технику. И сделать этом могут без выдвижения обвинения, а лиш назвав Вас «свидетелем». При этом, свидетелем какого дела и почему изымается — могут не объяснять. Адвокатов — могут не пускать. Подобные ситуации в Украине — не редкость. И в последнее время, в связи с происходящей неразберихой в стране — участились.

Изъятие информации — это один из самых серьезных и самых дешевых способов удара по предприятию. Многие компании, после таких действий вынуждены распускать персонал и закрывать свою деятельность. Т.к. даже начислить зарплату или отчитаться в налоговой не могут — вся информация «изъята». Что же делать, если работать приходится в псевдо-прововом государстве ?

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

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

Изменения внесенные  13.10.2014

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

1. В 64-х разрядных версиях Windows проблема возникает с паролями, в которых есть кириллица. Поэтому, для данных версий, рекомендуется использовать только английские буквы, цифры и спец-символы.

2. При архивации локальных баз данных 1С8 файлы не архивируются, если запущен процесс 1С8. Поэтому, перед архивированием, желательно останавливать процесс или использовать архивацию штатными средствами 1С8.

3. Базы данных 1С8, которые работают с Postgresql желательно архивировать с помощью штатных средств 1С8. Бекапы, произведенные с помощью штатных средств Postgresql могут не корректно восстанавливаться.

Пример создания бекапа базы 1С8 штатными средствами:

«C:\Program Files (x86)\1cv82\8.2.14.519\bin\1cv8.exe» DESIGNER /F «C:\InfoBase» /N «Admin» /P «pass» /DumpIB C:\backup1c_%datestr%.dt

Между резервным копированием и следующими командами нужно делать паузы — чтоб бекап успел сделаться до того, как начнется его копирование на сервер. Это делается с помощью вставки команды после строки с резервным копированием:

timeout 120

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

Далее, скрипты были исправлены в соотвествии с данными замечаниями и для тех, кто читал и использовал данную статью ранее — выделены отдельным цветом. В скриптах ниже показывается арихивация локальных баз данных 1С8. Если нужно архивировать 1С8 серверных вариантов — делайте, как упоминалось ранее.

Структура сети

Итак, рассмотрим примерную структуру хранения информации.

Здесь мы имеем структуру из 5 точек, которые синхронизируются друг с другом через интернет. Данная синхронизация может происходить в разное время, с применением динамических ip-адресов и использованием прокси-серверов из-за чего «вычислить» и уничтожить все узлы сразу — сравнительно проблематично. Не говоря о том, что сервера могут находиться в разных странах, числиться за разными людьми и управляться разными администраторами.

Количество узлов делается настолько большим, насколько критична потеря информации и насколько высоки потенциальные потери от этого.

Структура сервера

Нужно всегда помнить, что физический доступ любого из узлов в любой момент может оказаться у злоумышленников. А это значит, что информацию нужно шифровать.

На представленной выше схеме показано схематически, как можно хранить информацию:

1. В качестве основной операционной системы используется Linux Ubuntu. Эта операционная система бесплатна, достаточно устойчива к вирусным атакам и попыткам взлома. Данная система способна работать непрерывано без перезагрузки годами. А так же постоянно обновляется и совершенствуется. Обновления Вы можете ставить не мешая работе пользователей. Словом, преимуществ очень много, перед тем же Windows.

2. Фактически в основной операционной системе ничего не хранится — только файл крипто-провайдера, в котором сохраняется вся информация.

Криптопровайдер может выглядеть в виде любого файла, например, в виде виде, свопа и т.п. Файл может иметь как статический (более стабильно работает), так и динамический размер.

Можно использовать, например, контейнер truecrypt. Такой контейнер может работать в различных операционных системах: Windows, Linux, MacOS. И это очень хорошо, т.к. позволяет переписать криптопровайдер с одного компьютера на другой, даже если операционные системы отличаются.

3. Внутри криптопровайдера сохраняем основную операционную систему с которой работаем. Это может быть на Ваше усмотрение, например Windows. Хотя, никто не мешает размещать Linux, MacOS и т.п.

В качестве «движка» виртуальной машины можно использовать бесплатные virtualbox или vmplayer.

4. Сама информация уже хранится вниутри виртуальной машины. И именно её бекапим на различные сервера.

Таким образом, получаем хранение в виде «матрешки». В котором за одним слоем идет другой и так может быть до бесконечности. Но, не нужно фанатизма — хватит столько слоев, как представлено на схеме 🙂

Структура накопителей информации

Накопители информации, можно подлкючать непосредственно к сетевым шлюзам, поддерживающим подключение устройств по USB. Т.к. накопители не имеют операционной системы, храним информацию в «открытом виде», но в виде архива с шифрацией :). Пароль желательно подбирать беспорядочным сочетанием английских, русских букв, а так же спец-символов и цифр. Такой пароль должен быть более 12 символов, а лучше делать более 100. Никто не ограничивает Вас в длине пароля. Чем больше пароль — тем сложней его «взломать» методом перебора даже на много-ядерных серверах.

Программная реализация

Структура серверов может быть не однородной и работать под различными операционными системами. Например, у меня часто используются Linux, Windows XP, Windows Server. Поэтому, я опишу реализацию резервного копирования для каждой из этих систем.

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

Файловую информацию сохраняем с помощью архиватора 7zip с применением шифрации.

А информацию из баз данных сохраняем с помощью утилит соответствующей базы данных для резервного копирования с последующей архивацией бекапа с помощью 7zip с применением шифрации.

Обмен шифрованными файлами между серверами и накопителями производится через интернет по ftp или ssh.

Передача информации между серверами

Передачу информации производим с помощью утилиты curl. Данная утилита есть для всех основных операционных систем: Windows, Linux, MacOS. И это хорошо, т.к. позволяет использовать одинаковый подход в разных операционных системах.

Почитать о данной команде и найти где закачать Вы можете из Wikipedia: https://ru.wikipedia.org/wiki/CURL

Есть еще вариант — использовать wput. Но, как оказалось, данная команда хуже работает да и поддерживает меньше протоколов.

Windows XP

Обычно, данные в Windows XP — это данные обычных пользователей. Например, личные документы, фотографии и т.п.

1. Полный бекап (Производим полное резервное копирование 1 раз в квартал). Назовем его backup_inc.bat. В моем случае, скрипты для резервного копирования находятся по адресу: C:\backup_full, а сами полные бекапы сохраняются по адресу: C:\backup_full\full_arh.

echo on

echo Этот код оставил для возможности указания даты при необходимости сохранения ежедневных копий:   for /f «tokens=1-4 delims=/ » %%i in («%date%») do (

set dow=%%i

set month=%%j

set day=%%k

set year=%%l

)

set datestr=%month%_%day%_%year%

echo datestr is %datestr%

echo 1. Архивация конфигурационных файлов (Не забываем делать копии конфигурационных файлов. Ведь не хочется их заново писать…)

xcopy C:\backup_full\*.bat C:\backup_full\configs_tmp /Y

del «C:\backup_full\full_arh\configs_tmp_rud.7z»

«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\full_arh\configs_tmp_rud.7z» -r -mx5 «C:\backup_full\configs_tmp» -p»ВашПарольДлинойБолее12Символов»

echo 2. Архивация Документов

del «C:\backup_full\full_arh\docs.7z»

«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\full_arh\docs.7z» -r -mx5 «C:\docs» -p»ВашПарольДлинойБолее12Символов»

        net stop «1C:Enterprise 8.2 Server Agent»
del «C:\backup_full\full_arh\1c_bases.7z»
«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\full_arh\1c_bases.7z» -r -mx5 «C:\1c_bases\*.*»     -p»ВашПарольДлинойБолее12Символов»

net start «1C:Enterprise 8.2 Server Agent»

echo ###### Архивация завершена #######

C:

cd C:\backup_full

echo II.1. Подключаюсь по ftp и изменяю названия архивов старых архивов

echo ftp> ftp_backup.txt

echo open>> ftp_backup.txt

echo IPАдресВашегоFTPСервера>> ftp_backup.txt

echo rud>> ftp_backup.txt

echo ПарольКFTP>> ftp_backup.txt

echo literal PASV>> ftp_backup.txt

echo cd КаталогНаFTP>> ftp_backup.txt

echo binary>> ftp_backup.txt

echo literal PASV>> ftp_backup.txt

delete configs_tmp_rud_old.7z>> ftp_backup.txt

echo rename configs_tmp_rud.7z configs_tmp_rud_old.7z>> ftp_backup.txt

delete docs_old.7z>> ftp_backup.txt

echo rename docs.7z docs_old.7z>> ftp_backup.txt

delete 1c_bases_old.7z>> ftp_backup.txt

echo rename 1c_bases.7z 1c_bases_old.7z>> ftp_backup.txt

echo bye>> ftp_backup.txt

ftp -s:ftp_backup.txt

cd C:\backup_full

echo III.1 Копирование информации по ftp

curl -T C:\backup_full\full_arh\configs_tmp_rud.7z -u admin:ПарольОтFTP ftp://ВашFTP/КаталогНаFtp/

curl -T C:\backup_full\full_arh\docs.7z -u admin:ПарольОтFTP ftp://ВашFTP/КаталогНаFtp/

curl -T C:\backup_full\full_arh\1c_bases.7z -u admin:ПарольОтFTP ftp://ВашFTP/КаталогНаFtp/

2. Инкрементное резервное копирование (производим 1 раз в неделю). Полный архив обязательно должен оставаться на локальном компьютере, т.к. при формировании инкрементного архива производится сравнение файлов с файлами в полном архиве.

Назовем инкрементное резервное копирование backup_inc.bat.

echo on

for /f «tokens=1-4 delims=/ » %%i in («%date%») do (

set dow=%%i

set month=%%j

set day=%%k

set year=%%l

)

set datestr=%month%_%day%_%year%

echo datestr is %datestr%

echo 1. Архивация конфигурационных файлов

xcopy C:\backup_full\*.bat C:\backup_full\configs_tmp /Y

del «C:\backup_full\inc_arh\configs_tmp_rud_changes.7z»

«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\inc_arh\configs_tmp_rud_changes.7z» -r -mx5 «C:\backup_full\configs_tmp» -p»ВашПарольДлинойБолее12Символов»

echo 2. Архивация Исходных файлов Корпорация 2

del «C:\backup_full\inc_arh\docs_changes.7z»

«C:\Program Files\7-Zip\7z.exe» u «C:\backup_full\full_arh\docs.7z» -u- -up3q3r2x2y2z0w2!C:\backup_full\inc_arh\docs_changes.7z «C:\docs» -p»ВашПарольДлинойБолее12Символов»

net stop «1C:Enterprise 8.2 Server Agent»
del «C:\backup_full\full_arh\1c_bases.7z»
«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\full_arh\1c_bases.7z» -r -mx5 «C:\1c_bases\*.*»     -p»ВашПарольДлинойБолее12Символов»

echo ###### Архивация завершена #######

C:

cd C:\backup_full

echo II.1. Подключаюсь по ftp и изменяю названия архивов старых архивов

echo ftp> ftp_backup.txt

echo open>> ftp_backup.txt

echo ПутьКFTP>> ftp_backup.txt

echo rud>> ftp_backup.txt

echo ПарольКFTP>> ftp_backup.txt

echo literal PASV>> ftp_backup.txt

echo cd КаталогНаFTP>> ftp_backup.txt

echo binary>> ftp_backup.txt

echo literal PASV>> ftp_backup.txt

delete configs_tmp_rud_changes_old.7z>> ftp_backup.txt

echo rename configs_tmp_rud_changes.7z configs_tmp_rud_changes_old.7z>> ftp_backup.txt

delete docs_changes_old.7z>> ftp_backup.txt

echo rename docs_changes.7z docs_changes_old.7z>> ftp_backup.txt

delete 1c_bases_old.7z>> ftp_backup.txt

echo rename 1c_bases.7z 1c_bases_old.7z>> ftp_backup.txt

echo bye>> ftp_backup.txt

ftp -s:ftp_backup.txt

cd C:\backup_full

echo III.1 Копирование информации по ftp

curl -T C:\backup_full\inc_arh\configs_tmp_rud_changes.7z -u admin:ПарольКFTP ftp://ВашFTP/КаталогНаFTP/

curl -T C:\backup_full\inc_arh\docs_changes.7z -u admin:ПарольКFTP ftp://ВашFTP/КаталогНаFTP/

curl -T C:\backup_full\full_arh\1c_bases.7z -u admin:ПарольОтFTP ftp://ВашFTP/КаталогНаFtp/

3. Устанавливаем планировщик на выполнение задач. Для полного бекапа — 1 раз в квартал. Для инкрементного резервного копирования — 1 раз в неделю. Бекап делаем ночью — чтоб не мешать работе пользователей (правда пользователи в этом случае не должны выключать компьютер наночь).

Зададим задачу выполнения скрипта полного резервного копирования 1 раз в  квартал.

Запускаем меню:

     Пуск — Программы — Стандартные — Служебные — Назначение задания — Добавить Задание

Задание для инкрементного резервного копирования делаем аналогично предыдущему пункту только для файла backup_full.bat и за исключением 2-х пунктов, определяющих время срабатыварния:

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

Windows Server

На серверной версии Windows могут находиться базы данных, большое количество документов, конфигурации 1С и т.п.

По аналогии с WindowsXP сохраняем скрипты и бекапе в каталог: C:\backup_full.

Файл для полного резервного копирования backup_full.bat:

echo on

for /f «tokens=1-4 delims=/ » %%i in («%date%») do (

set dow=%%i

set month=%%j

set day=%%k

set year=%%l

)

set datestr=%month%_%day%_%year%

echo datestr is %datestr%

echo 1. Архивация конфигурационных файлов

xcopy C:\backup_full\*.bat C:\backup_full\configs_tmp /Y

«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\full_arh\configs_tmp_fd.7z» -r -mx5 «C:\backup_full\configs_tmp» -p»ВашПарольНаБолее12Символов»

echo 2. Архивация 1С

«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\full_arh\1cbase.7z» -r -mx5 «C:\1cbase» -p»ВашПарольНаБолее12Символов»

echo 3. Архивация документов

«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\full_arh\docsfd.7z» -r -mx5 «C:\Docs» -p»ВашПарольНаБолее12Символов»

echo 3. Резервное копирование базы данных в MsSQL

SQLCMD -S (local) -E -Q «BACKUP DATABASE oberon TO DISK = ‘C:\backup_full\full_arh\oberone_backup.bak’ WITH INIT, NOFORMAT, SKIP, NOUNLOAD»

«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\full_arh\oberone_backup.7z» -r -mx5 «C:\backup_full\full_arh\oberone_backup.bak» -p»ВашПарольНаБолее12Символов»

echo ###### Архивация завершена #######

C:

cd C:\backup_full

echo II.1. Подключаюсь по ftp и изменяю названия архивов старых архивов

echo ftp> ftp_backup.txt

echo open>> ftp_backup.txt

echo ВашFTP>> ftp_backup.txt

echo ЛогинНаFTP>> ftp_backup.txt

echo ПарольНаFTP>> ftp_backup.txt

echo literal PASV>> ftp_backup.txt

echo cd КаталогНаFTP>> ftp_backup.txt

echo literal PASV>> ftp_backup.txt

echo literal PASV>> ftp_backup.txt

echo rename configs_tmp_fd.7z configs_tmp_fd_old.7z>> ftp_backup.txt

echo rename 1cbase.7z 1cbase_old.7z>> ftp_backup.txt

echo rename docsfd.7z docsfd_old.7z>> ftp_backup.txt

echo rename oberone_backup.7z oberone_backup_old.7z>> ftp_backup.txt

echo bye>> ftp_backup.txt

ftp -s:ftp_backup.txt

cd C:\backup_full

echo III.1 Копирование информации по ftp

curl -T C:\backup_full\full_arh\configs_tmp_fd.7z -u Логин:Пароль ftp://ВашFTP/КаталогВFTP/

curl -T C:\backup_full\full_arh\1cbase.7z -u Логин:Пароль ftp://ВашFTP/КаталогВFTP/

curl -T C:\backup_full\full_arh\docsfd.7z -u Логин:Пароль ftp://ВашFTP/КаталогВFTP/

curl -T C:\backup_full\full_arh\oberone_backup.7z -u Логин:Пароль ftp://ВашFTP/КаталогВFTP/

Файл для инкрементного резервного копирования backup_inc.bat:

echo on

echo Инкрементное архивирование

for /f «tokens=1-4 delims=/ » %%i in («%date%») do (

set dow=%%i

set month=%%j

set day=%%k

set year=%%l

)

set datestr=%month%_%day%_%year%

echo datestr is %datestr%

echo 1. Архивация конфигурационных файлов

xcopy C:\backup_full\*.bat C:\backup_full\configs_tmp /Y

«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\inc_arh\configs_tmp_fd_changes.7z» -r -mx5 «C:\backup_full\configs_tmp» -p»ВашПарольБолее12Символов»

echo 2. Архивация 1С

«C:\Program Files\7-Zip\7z.exe» u «C:\backup_full\full_arh\1cbase.7z» -u- -up3q3r2x2y2z0w2!C:\backup_full\inc_arh\1cbase_changes.7z «C:\1cbase» -p»ВашПарольБолее12Символов»

echo 3. Архивация документов

«C:\Program Files\7-Zip\7z.exe» u «C:\backup_full\full_arh\docsfd.7z» -u- -up3q3r2x2y2z0w2!C:\backup_full\inc_arh\docsfd_changes.7z «C:\Docs» -p»ВашПарольБолее12Символов»

echo 3. Резервное копирование MsSQL

SQLCMD -S (local) -E -Q «BACKUP DATABASE oberon TO DISK = ‘C:\backup_full\inc_arh\oberone_backup.bak’ WITH INIT, NOFORMAT, SKIP, NOUNLOAD»

«C:\Program Files\7-Zip\7z.exe» a «C:\backup_full\inc_arh\oberone_backup_changes.7z» -r -mx5 «C:\backup_full\inc_arh\oberone_backup.bak» -p»ВашПарольБолее12Символов»

echo ###### Архивация завершена #######

C:

cd C:\backup_full

echo II.1. Подключаюсь по ftp и изменяю названия архивов старых архивов

echo ftp> ftp_backup.txt

echo open>> ftp_backup.txt

echo ВашFTP>> ftp_backup.txt

echo ЛогинFTP>> ftp_backup.txt

echo ПарольFTP>> ftp_backup.txt

echo literal PASV>> ftp_backup.txt

echo cd КаталогНаFTP>> ftp_backup.txt

echo binary>> ftp_backup.txt

echo literal PASV>> ftp_backup.txt

echo rename configs_tmp_fd_changes.7z configs_tmp_fd_changes_old.7z>> ftp_backup.txt

echo rename 1cbase_changes.7z 1cbase_changes_old.7z>> ftp_backup.txt

echo rename docsfd_changes.7z docsfd_changes_old.7z>> ftp_backup.txt

echo rename oberone_backup_changes.7z oberone_backup_changes_old.7z>> ftp_backup.txt

echo bye>> ftp_backup.txt

ftp -s:ftp_backup.txt

cd C:\backup_full

echo III.1 Копирование информации по ftp

curl -T C:\backup_full\inc_arh\configs_tmp_fd_changes.7z -u ЛогинFTP:ПарольFTP ftp://ВашFTP/КаталогНаFTP/

curl -T C:\backup_full\inc_arh\1cbase_changes.7z -u ЛогинFTP:ПарольFTP ftp://ВашFTP/КаталогНаFTP/

curl -T C:\backup_full\inc_arh\docsfd_changes.7z -u ЛогинFTP:ПарольFTP ftp://ВашFTP/КаталогНаFTP/

curl -T C:\backup_full\inc_arh\oberone_backup_changes.7z -u ЛогинFTP:ПарольFTP ftp://ВашFTP/КаталогНаFTP/

По аналогии с WindowsXP настраиваем задания в Windows Server на выполнение скрипта полного резервного копирования 1 раз в квартал и скрипта инкрементного резервного копирования — 1 раз в неделю.

Linux Ubuntu

Сервера частно работаю на операционной системе Linux. Поэтому, тут есть и сайты и базы данных и конфигурационные файлы. Все это желательно сохранять. Т.к. даже если клиент не заботится о резервном копировании своих сайтов, то провайдер или администратор сервера должен все равно о этом заботиться.

Делаем изменения в /etc/crontab, чтоб бекап выполнялся один раз в квартал:

# m h dom mon dow user<>command

17 *<—>* * *<->root    cd / && run-parts —report /etc/cron.hourly

25 6<—>* * *<->root<—>test -x /usr/sbin/anacron || ( cd / && run-parts —report /etc/cron.daily )

47 6<—>* * 7<->root<—>test -x /usr/sbin/anacron || ( cd / && run-parts —report /etc/cron.weekly )

52 6<—>1 * *<->root<—>test -x /usr/sbin/anacron || ( cd / && run-parts —report /etc/cron.monthly )

52 6<—>3 * *<->root<—>test -x /usr/sbin/anacron || ( cd / && run-parts —report /etc/cron.kvartal )

Создаем каталог: etc/cron.kvartal. В него записываем скрипт backup_full и устанавливаем атрибуты на выполнение. Этот файл будет производить полное резервное копирование 1 раз в квартал. Содержимое этого файла:

Скрипт полного резервного копирования записываем в файл :

#!/bin/sh

echo ############################################

echo ## Полное резервное копирование

echo ############################################

echo 1. Копирование конфигурационных файлов

cp /media/truecrypt6/backup_full/backup_full /media/truecrypt6/backup_full/configs_tmp.

cp /media/truecrypt6/backup_full/backup_inc /media/truecrypt6/backup_full/configs_tmp.

7z a /media/truecrypt6/backup_full/full_arh/configs_tmp_host.7z -r -mx5 «/media/truecrypt6/backup_full/configs_tmp» -p»ВашПарольБолее12Символов»

echo 2. Apache

7z a /media/truecrypt6/backup_full/full_arh/apache_host.7z -r -mx5 «/etc/apache2″ -p»ВашПарольБолее12Символов»

echo 3. Nginx

7z a /media/truecrypt6/backup_full/full_arh/nginx_host.7z -r -mx5 «/etc/nginx» -p»ВашПарольБолее12Символов»

echo 4. PHP

7z a /media/truecrypt6/backup_full/full_arh/php_host.7z -r -mx5 «/etc/php5″ -p»ВашПарольБолее12Символов»

echo 5. Копирование сайтов

7z a /media/truecrypt6/backup_full/full_arh/sites_host.7z -r -mx5 «/media/truecrypt1/www» -p»ВашПарольБолее12Символов»

echo 6. Копирование баз данных MySQL

mysqldump -uroot -pПарольКMySQL -A > /media/truecrypt6/backup_full/full_arh/mysqldump_host.sql

7z a /media/truecrypt6/backup_full/full_arh/mysqldump_host.7z -r -mx5 «/media/truecrypt6/backup_full/full_arh/mysqldump_host.sql» -ВашПарольБолее12Символов»

echo ###### Архивация завершена #######

cd /media/truecrypt6/backup_full

echo II.1. Подключаюсь по ftp и изменяю названия архивов старых архивов

HOST=’СерверFTP’

USER=’ЛогинКFTP’

PASSWD=’ПарольКFTP’

FILE=’file.txt’

ftp -n $HOST <<END_SCRIPT

quote USER $USER

quote PASS $PASSWD

passive

cd КаталогВFTP

rename configs_tmp_host.7z configs_tmp_host_old.7z

rename apache_host.7z apache_host_old.7z

rename nginx_host.7z nginx_host_old.7z

rename php_host.7z php_host_old.7z

rename sites_host.7z sites_host_old.7z

rename mysqldump_host.7z mysqldump_host_old.7z

bye

quit

END_SCRIPT

cd /media/truecrypt6/backup_full

echo III.1 Копирование информации по ftp

curl -T /media/truecrypt6/backup_full/full_arh/configs_tmp_host.7z -u admin:ПарольКFTP ftp://СерверFTP/КаталогВFTP/

curl -T /media/truecrypt6/backup_full/full_arh/apache_host.7z -u admin:ПарольКFTP ftp://СерверFTP/КаталогВFTP/

curl -T /media/truecrypt6/backup_full/full_arh/nginx_host.7z -u admin:ПарольКFTP ftp://СерверFTP/КаталогВFTP/

curl -T /media/truecrypt6/backup_full/full_arh/php_host.7z -u admin:ПарольКFTP ftp://СерверFTP/КаталогВFTP/

curl -T /media/truecrypt6/backup_full/full_arh/sites_host.7z -u admin:ПарольКFTP ftp://СерверFTP/КаталогВFTP/

curl -T /media/truecrypt6/backup_full/full_arh/mysqldump_host.7z -u admin:ПарольКFTP ftp://СерверFTP/КаталогВFTP/

exit 0

Крипт инкрементного резервного копирования сохраняем в каталоге /etc/cron.weekly и называем, например backup_inc. Устанавливаем атрибуты 755.

Содержимое данного файла:

#!/bin/sh

echo ############################################

echo ## Инкрементное резервное копирование

echo ############################################

echo 1. Копирование конфигурационных файлов

cp /media/truecrypt6/backup_full/backup_full /media/truecrypt6/backup_full/configs_tmp.

cp /media/truecrypt6/backup_full/backup_inc /media/truecrypt6/backup_full/configs_tmp.

7z a /media/truecrypt6/backup_full/inc_arh/configs_tmp_host_changes.7z -r -mx5 «/media/truecrypt6/backup_full/configs_tmp» -p»ВашПарольБолее12Символов»

echo 2. Apache

7z a /media/truecrypt6/backup_full/inc_arh/apache_host_changes.7z -r -mx5 «/etc/apache2″ -p»ВашПарольБолее12Символов»

echo 3. Nginx

7z a /media/truecrypt6/backup_full/inc_arh/nginx_host_changes.7z -r -mx5 «/etc/nginx» -p»ВашПарольБолее12Символов»

echo 4. PHP

7z a /media/truecrypt6/backup_full/inc_arh/php_host_changes.7z -r -mx5 «/etc/php5″ -p»ВашПарольБолее12Символов»

echo 5. Копирование сайтов

7z u «/media/truecrypt6/backup_full/full_arh/sites_host.7z» -u- -up3q3r2x2y2z0w2!/media/truecrypt6/backup_full/inc_arh/sites_host_changes.7z «/media/truecrypt1/www» -p»ВашПарольБолее12Символов»

echo 6. Копирование баз данных MySQL

mysqldump -uroot -pПарольКMySQL -A > /media/truecrypt6/backup_full/inc_arh/mysqldump_host_changes.sql

7z a /media/truecrypt6/backup_full/inc_arh/mysqldump_host_changes.7z -r -mx5 «/media/truecrypt6/backup_full/inc_arh/mysqldump_host_changes.sql» -p»ВашПарольБолее12Символов»

echo ###### Архивация завершена #######

cd /media/truecrypt6/backup_full

echo II.1. Подключаюсь по ftp и изменяю названия архивов старых архивов

HOST=’СерверFTP’

USER=’ЛогинКFTP’

PASSWD=’ПарольКFTP’

FILE=’file.txt’

ftp -n $HOST <<END_SCRIPT

quote USER $USER

quote PASS $PASSWD

passive

cd КаталогНаFTP

rename configs_tmp_host_changes.7z configs_tmp_host_changes_old.7z

rename apache_host_changes.7z apache_host_changes_old.7z

rename nginx_host_changes.7z nginx_host_changes_old.7z

rename php_host_changes.7z php_host_changes_old.7z

rename sites_host_changes.7z sites_host_changes_old.7z

rename mysqldump_host_changes.7z mysqldump_host_changes_old.7z

bye

quit

END_SCRIPT

cd /media/truecrypt6/backup_full

echo III.1 Копирование информации по ftp

curl -T /media/truecrypt6/backup_full/inc_arh/configs_tmp_host_changes.7z -u admin:ПарольFTP ftp://СерверFTP/КаталогНаFTP/

curl -T /media/truecrypt6/backup_full/inc_arh/apache_host_changes.7z -u admin:ПарольFTP ftp://СерверFTP/КаталогНаFTP/

curl -T /media/truecrypt6/backup_full/inc_arh/nginx_host_changes.7z -u admin:ПарольFTP ftp://СерверFTP/КаталогНаFTP/

curl -T /media/truecrypt6/backup_full/inc_arh/php_host_changes.7z -u admin:ПарольFTP ftp://СерверFTP/КаталогНаFTP/

curl -T /media/truecrypt6/backup_full/inc_arh/sites_host_changes.7z -u admin:ПарольFTP ftp://СерверFTP/КаталогНаFTP/

curl -T /media/truecrypt6/backup_full/inc_arh/mysqldump_host_changes.7z -u admin:ПарольFTP ftp://СерверFTP/КаталогНаFTP/

exit 0

Заключение

Любая система может развиваться до бесконечности. Можно добавлять новые хранилища, узлы. Так же команды резервного копирования для различных баз данных могут отличаться друг от друга. Поэтому, не исключено, что со временем в эту статью будут добавляться новые команды, индивидуальные для определенной реализации.

Автор: Рудюк С . А. https://corp2.net