Все бэкапы сваливаются в `/media/backups`; своя директория на каждый сервер. # Извлечение данных ## Просмотр списка бэкапов Смотрим список доступных директорий, находим нужную и подсовываем её в команду `borg list`: # borg list /media/backups/center-elite_ml/backup/ получаем что-то вроде: mysql-2019-09-05T17:21:56 Thu, 2019-09-05 11:21:58 [04caef1df47eaf6d7e1af693423cb18aaf08b0f935355881e9baa3afc6232f03] files-www-2019-09-05T17:21:59 Thu, 2019-09-05 11:21:59 [7d5ae617d5760588f73436e2cb2b6021893c32e447a50da9963295376e495444] mysql-2019-09-05T17:34:15 Thu, 2019-09-05 11:34:16 [ebadadf674924aeeb416412c07899dfc9c66fac302c138e2e3fa937c95232aee] files-www-2019-09-05T17:34:18 Thu, 2019-09-05 11:34:19 [536d5684fd81a58b95637b914ac76c7130c6418c1e175ae50f143f8555e03095] ## Извлечение бэкапа Переходим в директорию, в которую надо распаковать данные. Выполняем `borg extract`, подкладывая путь к архиву и через двойное двоеточие (`::`) имя бэкапа, который нужно извлечь, из списка выше: # borg extract /media/backups/center-elite_ml/backup::mysql-2019-09-05T17:34:15 Смотрим извлечённые файлы в текущей директории. # Раскатка на новые серверы Выбираем имя для нового сервера (например, домен с точками, заменёнными на `_`). Дальше в примере это будет `example_com`. ## Подготовка сервера, который нужно бэкапить Переключаемся под `root`: $ sudo -i Кладём [скрипт отсюда][link-external] ([внутренний адрес][link-internal]) в `/usr/local/bin`. Проверяем, чтобы он был `+x`: # chmod 750 /usr/local/bin/incbackup По умолчанию бэкапятся все базы MySQL и всё содержимое `/var/www`. Если нужно сохранять ещё какие-либо директории, дописываем их в верху скрипта. [link-external]: https://git.rating.kz/KIsakov/cli/raw/master/scripts/backup/incbackup [link-internal]: http://192.168.50.220/KIsakov/cli/raw/master/scripts/backup/incbackup ### Настройка автоматического выполнения Добавляем скрипт в `cron`. Желательно разносить серверы на разное время, чтобы они не начинали пересылать бэкапы одновременно: # crontab -e 30 2 * * * /usr/local/bin/incbackup ### Настройка заливки на удалённый сервер Создаём новый SSH-ключ, отвечая "да" на всё: # ssh-keygen -t ed25519 Пишем в SSH-конфиг параметры подключения к серверу бэкапов, не забывая заменить юзера на того, который выбрали выше: # mkdir -p ~/.ssh && chmod 750 ~/.ssh # cat >~/.ssh/config Host backup-server HostName backups.rating.kz Port 21000 User example_com Ctrl+D Разок подключаемся и отвечаем `yes`, чтобы сервер добавился в `authorized_keys`: # ssh backup-server ### Настройка бэкапов MySQL Создаём `~/.my.cnf` и помещаем туда юзера и пароль для подключения к СУБД. Юзер должен иметь [достаточно прав](https://subscription.packtpub.com/book/big_data_and_business_intelligence/9781783284399/1/ch01lvl1sec14/creating-a-backup-user), проще всего использовать `root`: # cat >~/.my.cnf [mysql] user=root password=l337h4xx0r [mysqldump] user=root password=l337h4xx0r Ctrl+D ## Подготовка сервера бэкапов Создаём нового юзера с домашней директорией в `/media/backups` и пустым паролём: # useradd --create-home --base-dir /media/backups example_com