подготовка регулярных бэкапов форума

phpBB но не только...

Модераторы: Olej, adminn

Olej1
Администратор
Сообщения: 34
Зарегистрирован: 07 ноя 2012, 21:16
Контактная информация:

подготовка регулярных бэкапов форума

Непрочитанное сообщение Olej1 » 29 дек 2019, 15:28

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

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: подготовка регулярных бэкапов форума

Непрочитанное сообщение Olej » 29 дек 2019, 16:23

Olej1 писал(а):
29 дек 2019, 15:28
о технике того, что чем и как архивировать.
Нужно себе ответить на вопросы:
1. какие объекты бэкапить для 100% успешного восстановления?
2. как именовать бэкапы для их лёгкой идентификации?
3. каким архиватором пользоваться для сжатия?
4. как обеспечить автоматическую регулярность бэкапов (cron или что-то другое?)
5. как будем хранить бэкапы?
6. заметки к восстановлению...
7. сколько времени это будет занимать, и как его оптимизировать?

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: подготовка регулярных бэкапов форума

Непрочитанное сообщение Olej » 29 дек 2019, 16:43

Olej писал(а):
29 дек 2019, 16:23
Olej1 писал(а):
29 дек 2019, 15:28
о технике того, что чем и как архивировать.
1. какие объекты бэкапить для 100% успешного восстановления?
Форум под движком phpBB.
Объектов полностью определяющих форум - 2:

1). Дерево файлов форума phpBB/Apache. Его размер достаточно приличный!
- на локальном форуме (дубликате для экспериментов) это - /var/www/html:

Код: Выделить всё

olej@ACER:/var/www$ du -hs /var/www/html/
1,2G	/var/www/html/
- на боевом форуме, хосте, который вы сейчас смотрите - это /

Код: Выделить всё

root@277938:~# du -hs /var/www/linux-ru.ru/
1,2G	/var/www/linux-ru.ru/
Наибольший объём здесь занимают файлы вложений:

Код: Выделить всё

root@277938:/var/www/linux-ru.ru# du -hs /var/www/linux-ru.ru/files/
1,1G	/var/www/linux-ru.ru/files/
Во всём остальном самое важное - это сохранить структуру.

2). БД MySQL где хранятся все конкретные данные (тексты) для этого phpBB:

Код: Выделить всё

root@277938:/var/www/linux-ru.ru# mysql --version
mysql  Ver 15.1 Distrib 10.3.18-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Самые важные отправные данные того, какая БД нам нужна (в системе их может быть множество) находим в файле config.php в корневом каталоге в п.1 - имя пользователя БД + пароль, вот это для локальной копии форума как выглядит:

Код: Выделить всё

olej@ACER:/var/www/html$ cat config.php
<?php
// phpBB 3.0.x auto-generated configuration file
// Do not change anything in this file!

$dbms = 'mysqli';
$dbhost = 'localhost';
$dbport = '';
$dbname = 'forum';
$dbuser = 'i1531004_solar4_linux-ru';
$dbpasswd = 'en;x@Uriie!k';
$table_prefix = 'rlf1_';
$acm_type = 'file';
$load_extensions = '';
Нас здесь должны интеровать 3 поля:
- название БД - dbname - forum;
- имя пользователя - dbuser - 'i1531004_solar4_linux-ru'
- пароль - dbpasswd - 'en;x@Uriie!k'
Это такие названия придумали ещё администраторы форума, в каких-то предыдущих поколениях-реинкарнациях во времена эксплуатации-хостинга форума.
Итого: <имя БД>:<пользователь>:<пароль>

P.S. Возможно (?) понадобится ещё бэкапить 3-й небольшой компонент:
3). специфические конфигурационные файлы Apache, PHP, MySQL, phpBB ... - чтобы без труда воссоздавать имеющиеся конфигурации на любом новом хосте.

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: подготовка регулярных бэкапов форума

Непрочитанное сообщение Olej » 29 дек 2019, 17:55

Olej писал(а):
29 дек 2019, 16:23
2. как именовать бэкапы для их лёгкой идентификации?
Как-то на основе такого вот префикса-суффикса к именам сохраняемых бэкап-файлов:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$  echo backup-$(date +%d.%m.%Y_%H-%M)
backup-29.12.2019_16-22
Непосредственно в командах:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ cp new_backup.sql 'backup-$(date +%d.%m.%Y_%H-%M)'.sql

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ cmp new_backup.sql backup-\$\(date\ +%d.%m.%Y_%H-%M\).sql 

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ echo $?
0

Для простоты сделаю так (это уже на боевом форуме):

Код: Выделить всё

root@277938:/var/www/linux-ru.ru# which prefix

root@277938:/var/www/linux-ru.ru# ls /usr/local/sbin

root@277938:/var/www/linux-ru.ru# echo 'echo backup-$(date +%d.%m.%Y_%H-%M)' > /usr/local/sbin/prefix

root@277938:/var/www/linux-ru.ru# cat /usr/local/sbin/prefix
echo backup-$(date +%d.%m.%Y_%H-%M)

root@277938:/var/www/linux-ru.ru# chmod a+x /usr/local/sbin/prefix

root@277938:/var/www/linux-ru.ru# /usr/local/sbin/prefix
backup-29.12.2019_17-32

root@277938:/var/www/linux-ru.ru# prefix
backup-29.12.2019_17-32
От имени рядового пользователя - на локальном хосте - немного по-другому:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ which prefix

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/olej/.bin:/home/olej/.bin
Тут просто sudo не поможет:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ sudo echo 'echo backup-$(date +%d.%m.%Y_%H-%M)' > /usr/local/bin/prefix
bash: /usr/local/bin/prefix: Отказано в доступе
Обходим это так:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ echo 'echo backup-$(date +%d.%m.%Y_%H-%M)' | sudo tee /usr/local/bin/prefix > /dev/null

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ cat /usr/local/bin/prefix
echo backup-$(date +%d.%m.%Y_%H-%M)

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ sudo chmod a+x /usr/local/bin/prefix

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ prefix
backup-29.12.2019_16-45
Теперь в контексте синтаксиса команд я могу это использовать так:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ cp new_backup.sql $(prefix).sql

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ ls -l *.sql
-rw-r--r-- 1 olej olej 48330094 дек 29 16:53 backup-29.12.2019_16-53.sql
-rw-r--r-- 1 olej olej 48330094 дек 29 16:20 new_backup.sql

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: подготовка регулярных бэкапов форума

Непрочитанное сообщение Olej » 29 дек 2019, 18:03

Olej писал(а):
29 дек 2019, 16:43
Olej писал(а):
29 дек 2019, 16:23
Olej1 писал(а):
29 дек 2019, 15:28
о технике того, что чем и как архивировать.
2. БД MySQL где хранятся все конкретные данные (тексты) для этого phpBB:

Код: Выделить всё

root@277938:/var/www/linux-ru.ru# mysql --version
mysql  Ver 15.1 Distrib 10.3.18-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Самые важные отправные данные того, какая БД нам нужна (в системе их может быть множество) находим в файле config.php в корневом каталоге в п.1 - имя пользователя БД + пароль, вот это для локальной копии форума как выглядит:

Код: Выделить всё

olej@ACER:/var/www/html$ cat config.php
<?php
// phpBB 3.0.x auto-generated configuration file
// Do not change anything in this file!

$dbms = 'mysqli';
$dbhost = 'localhost';
$dbport = '';
$dbname = 'forum';
$dbuser = 'i1531004_solar4_linux-ru';
$dbpasswd = 'en;x@Uriie!k';
$table_prefix = 'rlf1_';
$acm_type = 'file';
$load_extensions = '';
Вот как на локальном хосте выглядит дамп БД:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ time mysqldump -u'i1531004_solar4_linux-ru' -p'en;x@Uriie!k' forum > $(prefix).sql

real	0m0,826s
user	0m0,373s
sys	0m0,046s

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ ls -l *.sql
-rw-r--r-- 1 olej olej 48330094 дек 29 17:00 backup-29.12.2019_17-00.sql
Дамп сбрасывается за 1 сек. и имеет размер ~50Mb:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ du -hs *.sql
47M	backup-29.12.2019_17-00.sql

Вряд ли имеет смысл его ужимать, чем усложнять операции восстановления...

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: подготовка регулярных бэкапов форума

Непрочитанное сообщение Olej » 29 дек 2019, 18:20

Olej писал(а):
29 дек 2019, 18:03
Вот как на локальном хосте выглядит дамп БД:
А теперь - боевой хост, на котором мы сейчас всё это читаем-пишем:

Код: Выделить всё

root@277938:/usr/local/bin# cat /var/www/linux-ru.ru/config.php 
...
Извлекаем из этого файла: <имя БД>:<пользователь>:<пароль> (естественно, в последующем выводе эти значения заменены на фиктивные - не надобно всем знать пароли боевого форума :lol: ):

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ time mysqldump -uxxxxxx -pyyyyyyyy zzzzz > $(prefix).sql

real	0m0,826s
user	0m0,373s
sys	0m0,046s

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ ls -l *.sql
-rw-r--r-- 1 olej olej 48330094 дек 29 17:00 backup-29.12.2019_17-00.sql

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ du -hs *.sql
47M	backup-29.12.2019_17-00.sql
Время бэкапа чуть больше, чем на локальном компьютере ... но это всё определяется процессорами - реальными и виртуальными. :lol:
А вот размер БД на 29.12.2019 ... даже несколько меньше, чем БД, восстановленной из последнего прижизненного бэкапа на хостинге Айхор :-o :shock:
... хотя ... это же я поуничтожал нахер всех не активировавшихся на сегодня регистрантов: всяких ботов, спамеров и прочую срань... :mrgreen:

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: подготовка регулярных бэкапов форума

Непрочитанное сообщение Olej » 29 дек 2019, 18:31

Теперь:
Olej писал(а):
29 дек 2019, 16:43
1). Дерево файлов форума phpBB/Apache. Его размер достаточно приличный!
Здесь интересует: а). выбор архиватора, б). время на сжатие-восстановление, в). размеры архива...
Буду экспериментировать на локальном хосте (и там и там деревья файловых систем практически эквивалентны) с разными современными архиваторами...

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: подготовка регулярных бэкапов форума

Непрочитанное сообщение Olej » 30 дек 2019, 01:20

Olej писал(а):
29 дек 2019, 18:31
Здесь интересует: а). выбор архиватора, б). время на сжатие-восстановление, в). размеры архива...
Буду экспериментировать на локальном хосте (и там и там деревья файловых систем практически эквивалентны) с разными современными архиваторами...
Это будет в качестве эталона (как самый употребимый способ):

Код: Выделить всё

olej@ACER:/var/www$ pwd
/var/www

olej@ACER:/var/www$ sudo time tar -czf $(prefix).tgz html
42.45user 2.34system 0:45.22elapsed 99%CPU (0avgtext+0avgdata 3524maxresident)k
0inputs+2103448outputs (0major+577minor)pagefaults 0swaps

olej@ACER:/var/www$ ls -l backup-30.12.2019_00-05.tgz 
-rw-r--r-- 1 root root 1076962650 дек 30 00:05 backup-30.12.2019_00-05.tgz

olej@ACER:/var/www$ du -hs backup-30.12.2019_00-05.tgz 
1,1G	backup-30.12.2019_00-05.tgz
Всё ОК?

Код: Выделить всё

olej@ACER:/var/www$ sudo tar -zf backup-30.12.2019_00-05.tgz  --diff html 

olej@ACER:/var/www$ echo $?
0

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: подготовка регулярных бэкапов форума

Непрочитанное сообщение Olej » 30 дек 2019, 02:10

Сравниваю:

Код: Выделить всё

olej@ACER:/var/www$ sudo time 7z a $(prefix).tar.7z backup-30.12.2019_00-05.tar 

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=ru_RU.UTF-8,Utf16=on,HugeFiles=on,64 bits,2 CPUs Intel(R) Celeron(R) CPU G1840 @ 2.80GHz (306C3),ASM)

Scanning the drive:
1 file, 1174886400 bytes (1121 MiB)

Creating archive: backup-30.12.2019_00-25.tar.7z

Items to compress: 1

                                    
Files read from disk: 1
Archive size: 1047346171 bytes (999 MiB)
Everything is Ok
310.54user 2.91system 3:43.16elapsed 140%CPU (0avgtext+0avgdata 200572maxresident)k
0inputs+2045664outputs (0major+2213minor)pagefaults 0swaps

Код: Выделить всё

olej@ACER:/var/www$ sudo time bzip2 --best -k backup-30.12.2019_00-05.tar 
205.47user 1.17system 3:29.97elapsed 98%CPU (0avgtext+0avgdata 8812maxresident)k
0inputs+2098960outputs (0major+1414minor)pagefaults 0swaps

Код: Выделить всё

olej@ACER:/var/www$ sudo time xz -e -k backup-30.12.2019_00-05.tar  
490.68user 1.92system 8:14.87elapsed 99%CPU (0avgtext+0avgdata 97420maxresident)k
0inputs+2048872outputs (0major+7153minor)pagefaults 0swaps
В итоге:

Код: Выделить всё

olej@ACER:/var/www$ ls -l backup-*
-rw-r--r-- 1 root root 1174886400 дек 30 00:11 backup-30.12.2019_00-05.tar
-rw-r--r-- 1 root root 1074667374 дек 30 00:11 backup-30.12.2019_00-05.tar.bz2
-rw-r--r-- 1 root root 1049021108 дек 30 00:11 backup-30.12.2019_00-05.tar.xz
-rw-r--r-- 1 root root 1076962650 дек 30 00:05 backup-30.12.2019_00-05.tgz
-rw-r--r-- 1 root root 1047346171 дек 30 00:29 backup-30.12.2019_00-25.tar.7z
Несмотря на большой разброс во времени сжатия, размеры итоговых ахивов практически равны ... в пределах 2-3% :-o
Возможно, это из-за большой разнородности файлов в каталоге phpBB.
Поэтому не так важно какой архиватор будем использовать ... будем использовать традиционный .tgz

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: подготовка регулярных бэкапов форума

Непрочитанное сообщение Olej » 30 дек 2019, 16:37

Olej писал(а):
29 дек 2019, 16:23
Нужно себе ответить на вопросы:
1. какие объекты бэкапить для 100% успешного восстановления?
2. как именовать бэкапы для их лёгкой идентификации?
3. каким архиватором пользоваться для сжатия?
Всё предыдущее собираю, для локального экземпляра форума, в единый скрипт:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/local$ cat backup 
cd /var/www 
mysqldump -u'i1531004_solar4_linux-ru' -p'en;x@Uriie!k' forum | sudo tee $(prefix).sql > /dev/null 
sudo tar -czf $(prefix).tgz html
Возиться с вопросами защищённости, извлекать имена-пароли из каких-то хранилищ в облом - выписываю их явно, тем более что к компьютеру доступ только у меня, и всё это выполняется только с правами sudo.

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/local$ time ./backup 

real	0m47,220s
user	0m43,550s
sys	0m2,714s

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/local$ ls -l /var/www/backup*
-rw-r--r-- 1 root root   48330690 дек 30 10:09 /var/www/backup-30.12.2019_10-09.sql
-rw-r--r-- 1 root root 1076992942 дек 30 10:10 /var/www/backup-30.12.2019_10-09.tgz
И отправляю скрипт туда же, где лежит и prefix:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/local$ sudo cp backup /usr/local/bin
[sudo] пароль для olej: 

olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/local$ which backup
/usr/local/bin/backup

Ответить

Вернуться в «Управление WEB ресурсами»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость