Восстановление Nextcloud

После того как резервные копии 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, вторая переменная — место на сервере, где хранятся бэкапы. Остальные переменные можно редактировать по своему усмотрению, но в основном они такие же как и в статьях здесь.

Если есть вопросы, задавайте. Отвечу и внесу изменения.

Добавить комментарий

Ваш e-mail не будет опубликован.