Бекапы\резервные копии

neqste

Проверенные
Сообщения
191
Реакции
206
Баллы
11,045
Люди делятся на тех кто делают бекапы, и те кто будут делать эти бекапы.
Я настоятельно рекомендую всем, кто еще не делает резервные копии заняться этим вопросом как можно скорее.

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

Теория:
Что касается резервного копирования, то поверьте моему скромному опыту, тут тема не просто большая, она огромна. Есть масса различных способов сохранности своих данных, разными путями, но об вы можете ознакомится например вот тут:

Обычно резервные копии данных создают в момент когда активность на резервируемом объекте максимально низкая, да бы не навредить ни себе, ни людям которые как-то связаны с резервируемым объектом (например вебсайт). Это время сугубо личное для каждого проекта, но обычно я заметил, что по Москве лучше всего делать бекапы в период с 3 утра до 5 утра. Но это не столь важно, и так же не существенно.

Бекапы необходимо делать в автоматическом режиме, по запланированным заданиям (например cron в linux)
Необходимо иметь прямой доступ к терминалу сервера на котором будет делать бекапы, всякие скрипты лишь ограничивают наши возможности (но и ими вполне можно решать банальные проблемы)

Бекапы должны храниться в том месте, где они гарантированно будут сохранены на длительный срок, к сожалению свой персональный пк со своим жестким диском для этого мало годится если сравнивать с текущими интернет сервисами.

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

Каждый бекап должен содержать в себе максимально простую структуру данных, что бы в какой-то момент можно было в самые кратчайшие сроки востановить без особых усилий резервную копию.

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

Что будем делать: каждый день в 4 часа утра будет делать бекапы базы данных xenforo и отправлять запароленную базу к себе на почтовик в домене yandex.

Плюсы:
+наши бекапы автоматически будут копироваться\клонироваться\дублироваться на сервера яндекс, для того что бы они не пропали по их вине.
+хорошая скорость загрузки\скачивания
+в любой момент с любого места можем скачать свои бекапы, просто зайдя на свою почту.
Минусы:
- нельзя слать больше 48МБайт в одном письме
- нужно настроить MTA


Итак, минипример bash скрипта для создания бекапа базы данных, потом мы эту базу архивируем в зип с паролем, и отсылаем на почту:
Код:
$!/bin/bash

TIME=`date +%d-%m%-%y_%H-%M`

mysqldump -u username -p password databasename > /tmp/backupname.sql
zip -q -P somepassword /tmp/backup_$TIME.zip /tmp/backupname.sql
echo "sql backup # $TIME" | mutt -a "/tmp/backup_$TIME.zip" -s "new sql backup, date $TIME" -- [email protected]
rm /tmp/backup.zip
rm /backupname.sql
Подбробнее:

TIME - переменная куда заносится текущая дата и время сервера
zip - -q = silence (т.е. молчаливый режим работы утилиты), -P - установить пароль somepassword на архив backup_$TIME.zip который будет создан из бекапа базы данных в /tmp/backupname.sql и помещен в /tmp/backup_$TIME.zip
echo и mutt - отправляем письмо к себе на почту с файлом бекапа. Необходимо настройка mta (exim4 например со smarthost (т.е. использовать чужое smtp) )
rm - удаляем остатки

Ну а дальше этот скрипт можно сохранить куда угодно, и открыть crontab -e -u username и добавить исполнение данного скрипта с помощью cron каждые 4 часа утра каждый день.

Код:
$crontab -e
$ * 04 * * * bash /путь/до/скрипта/script.sh


По поводу smtp и exim mta (для отправки почты), почитайте об этом тут:


По поводу защиты данных, отнеситесь к этому серьезно. Хоть вы и отсылаете данные уважаемой компании, но каждная уважаемая компания будет и читает все ваши данные, будьте уверены, потому что не доказано обратное (глупо так говорить), и обратите внимание что запароливание с помощью zip архива это самая-самая примитивная мера предосторожности от попадения данных в чужие руки простым путем.
Для гугления обратите внимание на:
Все это делается либо средствами , либо openssl


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

Обращаю ваше внимание на то, что способов создание резервных копий просто коллосальное множество, это и rsyncи всякие, и bash скрипты, и специализированные утилиты на разных ЯП.
В общем выбор очень огромный. Пожалуйста, не откладывайте это!
 
Может кому пригодится, ниже приведу bash скрипт, который используется на моем Ксенюшном форуме для бекапа базы данных и всех файлов.

Код:
#!/bin/sh

doc_root=/home/x/xenforo/dirsite
name=backup_`date +\%Y\%m\%d`

dbconn=$doc_root/public_html/library/config.php

readcfg() {
   grep $1 $dbconn | sed 's/.*"\(.*\)".*/\1/'
}

host1=`readcfg host`
username=`readcfg username`
password=`readcfg password`
database=`readcfg dbname`

utf=`grep 'BX_UTF' $dbconn | grep true`

if [ -z "$utf" ]; then
   charset=cp1251
else
   charset=utf8
fi

backup_dir=$doc_root/backup

if [ ! -e $backup_dir ]; then
   mkdir $backup_dir
fi

cd $doc_root &&
mysqldump -h$host1 -u$username -p$password --default-character-set=$charset $database > $backup_dir/$name.sql &&
tar -cf $backup_dir/$name.tar $backup_dir/$name.sql &&
rm $backup_dir/$name.sql &&
tar -rf $backup_dir/$name.tar --exclude '*backup/*' --exclude '*public_html/files/*' . &&
gzip -f -9 $backup_dir/$name.tar &&
find $backup_dir -ctime +15 -exec rm {} \; &&
echo OK && exit
echo Error

doc_root определяет рутовую директорию
name имя файла, в нашем случае будет backup+дата_создания
dbconn путь до файла с конфигом

Чтобы функция readcfg() сработала, надо чтоб в файле конфига данные для подключения были заключены в двойные кавычки. Пример:
Код:
$config['db']['host'] = "localhost";
$config['db']['port'] = "3306";
$config['db']['username'] = "xenforoinfo";
$config['db']['password'] = "m3g4^nebrutabelnyuPaSs";
$config['db']['dbname'] = "xenforobd";
OFFTOP


извините если чей-то пароль от бд выложил :whistling:



Эта строчка отвечает за удаление бекапов созданных более 15 дней назад.
find $backup_dir -ctime +15 -exec rm {} \; &&

После того как заменили все данные на свои сохраняете этот скрипт например как backup.sh, на директорию выше чем ваш сайт.
Например ваш сайт лежит тут: /home/x/xenforo/dirsite/public_html/<файлы сайта>
Скрипт будет находиться: /home/x/xenforo/dirsite/backup.sh
Бекапы будут сохранятся в: /home/x/xenforo/dirsite/backup/

Самому скрипту надо дать права 700, через SSH это делается так: chmod +x backup.sh

Теперь вы можете поставить данный скрипт на cron, либо запускать руками ./backup.sh

Ну и время от времени сохранять бекапы к себе на комп.
 
Всё настроил, кроме ftp (у меня этот же скрипт, только с ftp), - ну не запускается и всё тут. Может в адресной строке что-то не то пишу: айчтитипи://мой сайт.ком/backup.sh
В чём может быть проблема? Подскажите, пожалуйста.
 
половину понял, половину нет. Есть кто сможет написать более подробно как настроить бекапы на почту маил?
 
Я сам полный ламер в linux
Если ты ламер и такое написал, то тогда я про себя молчу...

А по теме: любой опыт важен и нужен. Но я думаю, 95% всех кто держит сайты, используют панели управления: VestaCP, ISP Manager, Plesk Panel, CPanel и т.д., где бекап делается автоматом или нажатием одной кнопки. После чего данный бекап можно скачать, закачать куда надо и куда захочется и тому подобное. Например я использую у себя дома VestaCP, которая готовит бекап в виде архива, в котором и база и файлы движка.
Вывод один: то что предложил ты - это для задротов или кому очень интересно.
 
Если ты ламер и такое написал, то тогда я про себя молчу...

А по теме: любой опыт важен и нужен. Но я думаю, 95% всех кто держит сайты, используют панели управления: VestaCP, ISP Manager, Plesk Panel, CPanel и т.д., где бекап делается автоматом или нажатием одной кнопки. После чего данный бекап можно скачать, закачать куда надо и куда захочется и тому подобное. Например я использую у себя дома VestaCP, которая готовит бекап в виде архива, в котором и база и файлы движка.
Вывод один: то что предложил ты - это для задротов или кому очень интересно.
Сейчас я нормальный гайд напишу. А то это теоретический бред.
 
напишите пожалуйста как с шаред хостинга автоматически отправлять бекапы куда нибудь (другой ftp,мыло,свой пк, еще куда)
 
https://xenforo.info/threads/Как-создать-бекап-xenforo-руководство.11761/ - для VPS / Dedicated.

Для шаредов обычно у них (cPanel) есть довольно хорошие способы создания бекапов. Тут дело в другом, куда резервные копии заливать, а вот куда их заливать описано выше. К сожалению я shared хостингом пользуюсь редко, и у меня нет под рукой, что бы с изображениями создать куда нужно ткнуть, что бы было все как нужно. Но мне кажется любой человек сможет интуитивно сориентироваться.

Т.к. там предельно все просто, нужно либо искать по словам backup, либо по словам cronjob. Если по словам cronjob, и будет отсутствовать опция создания бекапа, то можно запилить bash / php скрипт который дергает базу, и экспортирует файлы на хост, после чего происходит выполнения крона, и удаляются данные.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу