Резервное копирование и восстановление Nextcloud

При использовании «домашнего» облака Nextcloud  на Raspberry Pi мы должны быть готовы, что сломаются: сама малина, системная карта или диск с данными пользователей.

Надо защитить облако от этой напасти, поэтому надо регулярно делать копии папки с программой nextcloud, базы данных sql и папки с личными файлами пользователей.

Итак, настраиваем архивирование облака.

Нужно примонтировать второй резервный диск по адресу /mnt/hdd2.

Подключая диски к Raspberry, вы увеличиваете нагрузку на ее шину питания, это может приводить к зависанию микрокомпьютера и разным глюкам.

Безопаснее всего воспользоваться USB хабом со своим питанием.

Я пробовал вот такие варианты:

Это абсолютно бесполезная вещь. Даже один диск при подключенном питании без малины не раскручивает шпиндель с этом хабе! Что уж говорить о двух и более дисках?

Путем проб и ошибок был найден идеал:

Вот эта штука запускает диски без проблем. Но мы отвлеклись. Итак…

Набираем команду:

ls -l /dev/disk/by-uuid

находим UUID

Создаем точку монтирования. В данном случае это hdd2:

sudo mkdir /mnt/hdd2

Открываем fstab:

sudo nano /etc/fstab

Добавляем строку:

UUID=A69E29769E294063 /mnt/hdd2 ntfs nofail,uid=user,gid=group,dmask=0007 0 0

В это строке есть UUID диска A69E29769E294063, точка монтирования /mnt/hdd2, формат системы диска — ntfs (вы ведь форматировали диск в нтфсе, да?), пользователь и группа пользователя — вместо user и group поставьте своего юзера и группу. dmask=0007 0 0 — оставьте как есть. Т.е. диском с данными Nextcloud у нас владеет пользователь www-data, а диском для бэкапа — Ваш пользователь.

Перезагружаемся

sudo reboot

Первый USB-диск у нас содержит папку с данными пользователей.

Второй диск — резервный. Это место для хранения бэкапов.

Создаем на рабочем стол и открываем файл:

nano /home/user/Desktop/nextcloud.sh

Вставляем туда следующие строки:

#!/bin/bash

#включение режима обслуживания

sudo -u www-data php /var/www/html/nextcloud/occ maintenance:mode --on

#создание дампа базы данных на диск hhd2

mysqldump -u user -ppassword database > /mnt/hdd2/mariadb/nextcloud-$(date +"%d.%m.%y")_$(date +"%H:%M:%S").sql

#синхронизация папки nextcloud на диск hdd2

rsync -azrv --delete /var/www/html/nextcloud /mnt/hdd2/

#синхронизация папки с данными пользователей с диска data2 на диск hdd2

rsync -azrv --delete /mnt/data2/data /mnt/hdd2/

#выключение режима обслуживания

sudo -u www-data php /var/www/html/nextcloud/occ maintenance:mode --off

Команда «mysqldump» создает дамп базы данных .sql.

Команда «rsync -azrv —delete» синхронизирует папку программы и папку с файлами пользователей. Она не перезаписывает их, а только изменяет, добавляет и удаляет новые, измененные или удаленные файлы. Это происходит быстрее, чем при полном копировании, и экономит количество циклов перезаписи на диске.

Закрываем и сохраняем файл — сохраняем, закрываем — ctrl+X, Y, Enter, делаем его исполняемым:

chmod +x /home/user/Desktop/nextcloud.sh

Открываем в терминале:

crontab -e

добавляем внизу:

#синхронизация папок nextcloud и базы данных на диске hdd2, в 1-00 ежедневно
0 1 * * * /home/user/Desktop/nextcloud.sh
#удаление баз данных старше 2 дней, в 5-00 ежедневно
0 5 * * * find /mnt/hdd2/mariadb -type f -mtime +2 -delete

сохраняем, закрываем — ctrl+X, Y, Enter.

Таким образом мы настроили:

— сохранение рабочей папки /var/www/html/nextcloud на резервный диск.

— сохранение папки с данными пользователей

— сохранение базы данных из mariadb.

Это все, что необходимо.

Если например сгорела малина или диск, а архивный диск цел — покупаем новую малину или новый диск, устанавливаем свежую Raspberry OS, Apache2,  php, mariadb, добавляем базу nextcloud, пользователя nextcloud (пароли создавайте прежние!), настраиваем SSL,  «включаем» сайт по умолчанию в  apache2, убеждаемся, что вебсервер доступен по ssl, настраиваем php (увеличиваем лимиты).

Монтируем диски, используя старые названия точек монтирования!

Копируем с резервного диска на основной рабочую папку /var/www/html/nextcloud

sudo cp /mnt/hdd2/nextcloud /var/www/html/nextcloud -r

Восстанавливаем базу данных из дампа:

mysql -u user -ppassword database < /mnt/hdd2/mariadb/nextcloud.sql

Вставляем свои: user, password, database и /mnt/hdd/mariadb/nextcloud_3.10.2023.sql — путь к файлу с дампом базы.

Проверяем правильность адреса домена, расположения папок и т.д.

Пробуем открыть облако из браузера.  Если все делали правильно — должно заработать.

Открываем crontab в новой системе и настроить бэкап заново, как написано выше.
Если все работает, не забываем восстановить работу cron для nextcloud, как в этой статье.

Your email address will not be published. Required fields are marked *

*