подготовка регулярных бэкапов форума
подготовка регулярных бэкапов форума
Имеет ли это рассмотрение полезность хоть для какого-то другого Интернет-ресурса - не знаю, да и не интересуюсь.
- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: подготовка регулярных бэкапов форума
Нужно себе ответить на вопросы:
1. какие объекты бэкапить для 100% успешного восстановления?
2. как именовать бэкапы для их лёгкой идентификации?
3. каким архиватором пользоваться для сжатия?
4. как обеспечить автоматическую регулярность бэкапов (cron или что-то другое?)
5. как будем хранить бэкапы?
6. заметки к восстановлению...
7. сколько времени это будет занимать, и как его оптимизировать?
- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: подготовка регулярных бэкапов форума
Форум под движком 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
Код: Выделить всё
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 = '';
- название БД - dbname - forum;
- имя пользователя - dbuser - 'i1531004_solar4_linux-ru'
- пароль - dbpasswd - 'en;x@Uriie!k'
Это такие названия придумали ещё администраторы форума, в каких-то предыдущих поколениях-реинкарнациях во времена эксплуатации-хостинга форума.
Итого: <имя БД>:<пользователь>:<пароль>
P.S. Возможно (?) понадобится ещё бэкапить 3-й небольшой компонент:
3). специфические конфигурационные файлы Apache, PHP, MySQL, phpBB ... - чтобы без труда воссоздавать имеющиеся конфигурации на любом новом хосте.
- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: подготовка регулярных бэкапов форума
Как-то на основе такого вот префикса-суффикса к именам сохраняемых бэкап-файлов:
Код: Выделить всё
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
Код: Выделить всё
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
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: подготовка регулярных бэкапов форума
Вот как на локальном хосте выглядит дамп БД:Olej писал(а): ↑29 дек 2019, 16:43Olej писал(а): ↑29 дек 2019, 16:232. БД MySQL где хранятся все конкретные данные (тексты) для этого phpBB:Самые важные отправные данные того, какая БД нам нужна (в системе их может быть множество) находим в файле config.php в корневом каталоге в п.1 - имя пользователя БД + пароль, вот это для локальной копии форума как выглядит:Код: Выделить всё
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
Код: Выделить всё
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
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/rus.linux.net.admin/timeweb$ du -hs *.sql
47M backup-29.12.2019_17-00.sql
Вряд ли имеет смысл его ужимать, чем усложнять операции восстановления...
- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: подготовка регулярных бэкапов форума
А теперь - боевой хост, на котором мы сейчас всё это читаем-пишем:
Код: Выделить всё
root@277938:/usr/local/bin# cat /var/www/linux-ru.ru/config.php
...

Код: Выделить всё
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

А вот размер БД на 29.12.2019 ... даже несколько меньше, чем БД, восстановленной из последнего прижизненного бэкапа на хостинге Айхор


... хотя ... это же я поуничтожал нахер всех не активировавшихся на сегодня регистрантов: всяких ботов, спамеров и прочую срань...

- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: подготовка регулярных бэкапов форума
Здесь интересует: а). выбор архиватора, б). время на сжатие-восстановление, в). размеры архива...
Буду экспериментировать на локальном хосте (и там и там деревья файловых систем практически эквивалентны) с разными современными архиваторами...
- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: подготовка регулярных бэкапов форума
Это будет в качестве эталона (как самый употребимый способ):
Код: Выделить всё
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
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: подготовка регулярных бэкапов форума
Код: Выделить всё
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

Возможно, это из-за большой разнородности файлов в каталоге phpBB.
Поэтому не так важно какой архиватор будем использовать ... будем использовать традиционный .tgz
- Olej
- Писатель
- Сообщения: 18656
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: подготовка регулярных бэкапов форума
Всё предыдущее собираю, для локального экземпляра форума, в единый скрипт:
Код: Выделить всё
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
Код: Выделить всё
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
Код: Выделить всё
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
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость