После того как резервные копии Nextcloud’а готовы было бы неплохо их проверить, если вдруг наступит «Час X». Как и в предыдущей статье есть сервер бэкапов и есть сервер Nextcloud и все скрипты по восстановлению выполняются на стороне сервера бэкапов.
Само восстановление немного сложнее, чем резервное копирование и состоит из чуть большего количества шагов:
- Включение режима обслуживания
- Остановка сервисов (nginx, apache…)
- Удаление данных (как сервера, так и самих данных)
- Удаление базы данных
- Восстановление сервера и данных (tar и rsync)
- Восстановление базы данных
- Запуск сервисов (nginx, apache…)
- Обновление Etag’а
- Выключение режима обслуживания
Все пути взяты из статьи по установке или резервному копированию Nextcloud. Источник вдохновения тот же: Carsten Rieger и DecaTec.
Включение режима обслуживания
Делается просто:
sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:mode --on
Остановка сервисов
systemctl stop nginx
Удаление старых директорий
rm -r /usr/share/nginx/nextcloud/ rm -r /usr/share/nginx/nextcloud-data/
Удаление базы данных
mysql -h localhost -unextclouduser -pyour-password -e "DROP DATABASE nextcloud"
Восстановление данных
tar -xpzf /home/administrator/ncserver.tar.gz -C /usr/share/nginx/netxcloud rsync -axv /source/dir/backup /usr/share/nginx/nextcloud-data
Восстановление базы
mysql -h localhost -unextclouduser -pyour-password -e "CREATE DATABASE nextcloud"
или если в бэкапе базы была поддержка смайликов
mysql -h localhost -unextclouduser -pyour-password -e "CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"
Заполнение данными
mysql -h localhost -unextcloud -pyour-password nextcloud < /home/administrator/ncdb.sql
Запуск сервисов
systemctl start nginx
Обновление ETag’а.
Данная операция говорит клиентам, что данные изменились и надо бы обновиться.
sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:data-fingerprint
Отключение режима обслуживания
sudo -u www-data php /usr/share/nginx/nextcloud/occ maintenance:mode --off
На этом ручное восстановление из бэкапа завершено. Ниже даю ссылку на скрипт, который восстанавливает с сервера бэкапов на сервер Nextcloud.
https://github.com/DiDimus/Nextcloud
Примечание: первая переменная — дата бэкапа в формате, который указан в файле nextcloud-backup.sh, вторая переменная — место на сервере, где хранятся бэкапы. Остальные переменные можно редактировать по своему усмотрению, но в основном они такие же как и в статьях здесь.
Если есть вопросы, задавайте. Отвечу и внесу изменения.