Backup

Матеріал з Wiki.Zina
Перейти до навігації Перейти до пошуку

Бэкап, бекап — резервное копирование сайтов.

Backup на NAS

[ред. | ред. код]

Для хранения бэкапов на NAS используем папку:

\\NAS\backup
/volume1/backup

Доступ к ней по FTP (порт стандартный 21):

Структура папок:

  • dev
  • dev2
  • hp
    • Jira — пока пустая
  • prod — сюда автоматически бэкапятся сайты с прода
  • Routers — конфиги роутеров, на случай неудачного обновления или изменений настроек
    • Mikrotik
  • tserver
    • 1C
    • AllSubmitter
    • Users — пока пустая
    • WindowsServer2019 — образы диска с Windows Server, пока не настроено
    • WTware — конфиги
  • Zina-DVD — временная папка, куда собираются файлы для архивирования на DVD
    • Design — все дизайнерские папки, без кода
    • Webserver — дев-версии и ручные бэкапы сайтов: код, базы данных, info.txt

Бэкап на Windows Server - robocopy

[ред. | ред. код]

Используем штатную программу коммандной строки robocopy.

Параметры robocopy, которые мы используем

  • /S — копировать рекурсивно, за исключением пустых директорий и файлов (альтернатива /E — копировать с пустыми директориями и файлами)
  • /DCOPY:T — копировать метки времени директорий
  • /COPY:DAT — копировать атрибуты файлов (DAT — параметры по умолчанию):
    • D Data
    • A Attributes
    • T Time stamps
  • /Z — restartable mode — возможность продолжить копирование в случае обрыва
  • /M — копировать только файлы с атрибутом "Архивный" и потом его сбросить на конечной стороне. Благодаря этому при следующем копировании будут скопированы только измененные файлы.
  • /MIN:1 — копировать только файлы ненулевого размера
  • /MT:64 — Creates multi-threaded copies with N threads. N must be an integer between 1 and 128. The default value for N is 8.
  • /R:2 — Количество повторных попыток копирования файла в случае, если копирование не удалось. Причем «не удалось» срабатывает и в том случае, если доступ к файлу закрыт. По-умолчанию равно одному миллиону, т.е. бесконечно, поэтому копирование благополучно зависнет на первом же файле, к которому не будет доступа.
  • /W:5 — Задержка в секундах между попытками копирования. По умолчанию равно 30 секундам.
  • /MOVE — Moves files and directories, and deletes them from the source after they are copied.
  • /MIR — зеркалирование: эквивалентно /E (копировать с вложенными директориями, в т.ч. пустыми) плюс /PURGE (удалять на конечно стороне файлы и директории, которых уже нет в источнике).

Бэкап базы 1С

[ред. | ред. код]

В папки с датами

[ред. | ред. код]

C:\Tools\Backup\Backup-1C-DB.bat

set yyyy=%date:~6,4%
set mm=%date:~3,2%
set dd=%date:~0,2%
set h=%time:~0,2%
set m=%time:~3,2%
set source="C:\1Cv82-Base-Zina"
set destination="\\nas\backup\tserver\1C\%yyyy%-%mm%-%dd%_%h%-%m%"
set log="\\nas\backup\tserver\1C\robocopy.log"
robocopy %source% %destination% /S /DCOPY:T /Z /MIN:1 /MT:64 /R:2 /W:5 /LOG:%log%

Отличие от бэкапа AllSubmitter:

  • параметр /MIN:1, благодаря которому копируются только файлы больше 0 байт;
  • отсутствие параметра /M, благодаря чему всегда копируются все файлы, а не только измененные.

Зеркалирование

[ред. | ред. код]

C:\Tools\Backup\Backup-1C-full-daily.bat

set source="C:\1Cv82-Base-Zina"
set destination="\\nas\backup\tserver\1C\full-daily\1Cv82-Base-Zina"
set log="\\nas\backup\tserver\1C\full-daily\robocopy.log"
robocopy %source% %destination% /MIR /DCOPY:T /Z /MT:64 /R:2 /W:5 /LOG:%log%

Бэкап баз AllSubmitter

[ред. | ред. код]

C:\Tools\Backup\Backup-AllSubmitter.bat

set yyyy=%date:~6,4%
set mm=%date:~3,2%
set dd=%date:~0,2%
set h=%time:~0,2%
set m=%time:~3,2%
set source="C:\AllSubmitter"
set destination="\\nas\backup\tserver\AllSubmitter\%yyyy%-%mm%-%dd%_%h%-%m%"
set log="\\nas\backup\tserver\AllSubmitter\robocopy.log"
robocopy %source% %destination% /S /DCOPY:T /Z /M /R:2 /W:5 /MT:64 /LOG:%log%
robocopy %destination% %destination% /S /MOVE

Отличия от бэкапа 1С:

  • параметр /M, благодаря которому копируются только измененные файлы;
  • второй вызов robocopy, который удаляет директорию бекапа, если она оказалась пустой.

Зеркалирование

[ред. | ред. код]

C:\Tools\Backup\Backup-AllSubmitter-hourly.bat

set source="C:\AllSubmitter"
set destination="\\nas\backup\tserver\AllSubmitter\full-hourly\DB\AllSubmitter"
set log="\\nas\backup\tserver\AllSubmitter\full-hourly\DB\robocopy.log"
robocopy %source% %destination% /MIR /DCOPY:T /Z /MT:64 /R:2 /W:5 /LOG:%log%
set source="C:\ProgramData\WebLogAnalyzer\AllSubmitter"
set destination="\\nas\backup\tserver\AllSubmitter\full-hourly\Settings\ProgramData\WebLogAnalyzer\AllSubmitter"
set log="\\nas\backup\tserver\AllSubmitter\full-hourly\Settings\robocopy.log"
robocopy %source% %destination% /MIR /DCOPY:T /Z /MT:64 /R:2 /W:5 /LOG:%log%

Бэкап файлов сайта

[ред. | ред. код]

Сначала необходимо открыть терминал и перейти в каталог, в который будет сохранен бэкап.

cd ПУТЬ_К_КАТАЛОГУ

Путь к каталогу можно скопировать из строки адреса Nautilus или Krusader. Путь должен быть локальным, т.е. без ftp:// и smb://.

Архивировать лучше не файлы внутри папки, а целиком папку. Потому что при архивировании списка файлов даже через шаблон * в архив не попадают файлы, начинающиеся с точки, типа .htaccess. А если архивировать папку, то все вложенные в нее файлы будут сохранены.

Сделать бэкап папки html в формате tar.gz (наиболее естественный для Linux вариант) и автоматически добавить к имени архива текущую дату:

tar -cvzf `date +%Y-%m-%d_%H-%M`_backup.tar.gz html

То же в формате zip:

zip -r `date +%Y-%m-%d_%H-%M`_backup.zip html

Если нужно исключить из архивирования сляшком тяжелую папку — например, sites/default/files/:

tar -czf `date +%Y-%m-%d_%H-%M`_backup.tar.gz html --exclude='sites/default/files/*'

Бэкап базы данных

[ред. | ред. код]

Бэкап базы данных со сжатием и именованием файла по текущей дате:

mysqldump -u USER -p DATABASE | gzip > `date +%Y-%m-%d_%H-%M`.sql.gz

Пароль можно не указывать, тогда он будет запрошен, или можно вставить сразу после параметра -p, без пробела.

С быстрым заполнением параметров (один раз указать имя базы, если имя юзера совпадает с базой), добавлением к имени бэкапа названия базы данных и отображением имени и размера файла в конце:

db='DATABASE'; user=$db; backup=$db'_'`date +%Y-%m-%d_%H-%M`'.sql.gz'; mysqldump -u $user -p $db | gzip > $backup; du -h $backup; unset db user backup

С отображением прогресса (используется дополнительная программа pv):

db='DATABASE'; user=$db; backup=$db'-'`date +%Y-%m-%d_%H-%M`'.sql.gz'; mysqldump -u $user -p $db | gzip | pv > $backup; unset db user backup

Импорт базы данных из файла дампа .sql

[ред. | ред. код]
 mysql -u USER -p DATABASE < FILE.sql

Импорт базы данных их архива .gz и с отображением прогресса:

pv FILE.sql.gz | gunzip | mysql -u USER -p DATABASE

Бэкап базы данных на хостинге с локального компьютера

[ред. | ред. код]

Команда, которая соединяется с хостингом по SSH из-под root (нужно будет ввести пароль root) и бэкапит базу с именем ИМЯ_БАЗЫ_ДАННЫХ. Это имя можно узнать из списка "Инструмены > Базы данных" в IspManager или из списка "Databases" в phpMyAdmin http://77.120.105.84/.

db_name='ИМЯ_БАЗЫ_ДАННЫХ'; ssh root@zina.com.ua "mysqldump $db_name --compact | gzip" > $db_name.sql.gz; du -h $db_name.sql.gz; unset db_name

Перенос БД с локального компьютера на удаленный

[ред. | ред. код]
  • DB_LOCAL_DBNAME - имя локальной базы данных
  • DB_LOCAL_USER - пользователь базы данных на локальном компьютере
  • DB_LOCAL_PASS - пароль пользователя на локальном компьютере
  • DB_REMOTE_DBNAME - имя удаленной базы данных
  • DB_REMOTE_USER - пользователь базы данных на удаленном компьютере
  • DB_REMOTE_PASS - пароль пользователя на удаленном компьютере
ssh root@zina.com.ua "mysqldump -h localhost -u DB_LOCAL_USER -pDB_LOCAL_PASS DB_LOCAL_DBNAME | mysql -h 192.168.0.100 -u DB_REMOTE_USER -pDB_REMOTE_PASS DB_REMOTE_DBNAME"

Пример:

ssh root@zina.com.ua "mysqldump -h localhost -u kozakam_kozakam -pht1cNOWj kozakam_kozakam | mysql -h 192.168.0.100 -u kozakam_kozakam -pht1cNOWj kozakam_kozakam"

Бэкап домена/субдомена

[ред. | ред. код]
  • ИМЯ_ПОЛЬЗОВАТЕЛЯ - unix-пользователь (владелец домена). Можно посмотреть в IspManager'e, на странице "Учетные записи" > "Пользователи".
  • ИМЯ_ДОМЕНА - домен (без www.) из списка доменов пользователя (Страница "WWW домены" IspManager).
user_name='ИМЯ_ПОЛЬЗОВАТЕЛЯ'; domain_name='ИМЯ_ДОМЕНА'; ssh root@zina.com.ua "cd /var/www/$user_name/data/www/$domain_name && tar cz ./" > $domain_name.tar.gz; du -h $domain_name.tar.gz; unset user_name; unset domain_name

BackUp настроек пользователя Ubuntu

[ред. | ред. код]
~/.bashrc
~/.config/mc/ini
~/.config/xfce4/terminal/terminalrc

Ссылки

[ред. | ред. код]

Программы для бэкапа под Windows

[ред. | ред. код]

Программы для бэкапа под Linux

[ред. | ред. код]

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