Automatizați copiile de rezervă Nextcloud consistente cu Restic și Cron

Pentru o copie de rezervă Nextcloud fiabilă, întrerupeți activitatea utilizatorului, exportați baza de date și utilizați Restic pentru a captura exportul împreună cu directoarele de aplicații și date. Plasați jobul într-un script deținut de root și programați-l cu cron; verificați instantaneele și efectuați o restaurare de test înainte de a vă baza pe programare.

Acest exemplu presupune un server Debian sau Ubuntu, o instalare directă a Nextcloud la /var/www/nextcloud, un director de date separat la /srv/nextcloud-datași MariaDB. Înlocuiți aceste valori cu căile reale și numele bazei de date. Pașii au fost verificați în raport cu Manualul de administrare Nextcloud 35 și documentația Restic 0.19.1 din octombrie 2026.

O ilustrație cu un terminal întunecat arată modul de întreținere Nextcloud activat înainte de exportul bazei de date MariaDB.
O ilustrare în stil terminal a celor două acțiuni care inițiază o copie de rezervă consistentă: activarea modului de întreținere și exportarea bazei de date.

Ce trebuie să conțină o copie de rezervă Nextcloud?

Ghidul Nextcloud pentru backup listează configurația, datele, baza de date, tema și orice aplicații personalizate ca fiind părțile importante de păstrat. Copierea de rezervă a directorului complet al aplicației include de obicei configurația și aplicațiile incluse, dar verificați dacă aplicațiile personalizate, temele sau directorul de date se află în altă parte pe server. Includeți fiecare cale separată în comanda Restic.

Modul de întreținere blochează sesiunile existente și previne noi conectări în timp ce rulează backup-ul. Acest lucru face ca baza de date și fișierele să fie mai puțin susceptibile de a se modifica în momente diferite, dar face și ca Nextcloud să nu fie disponibil pe durata acestuia. Pentru un depozit de date mare, programați jobul într-o fereastră silențioasă. Dacă serverul dvs. are lucrători externi sau scripturi care scriu direct în directorul de date, puneți-i și pe aceștia în pauză.

Instrucțiunile oficiale de backup ale Nextcloud explică componentele și opțiunile de exportare a bazei de date. Această procedură utilizează MariaDB; pentru PostgreSQL, MySQL sau SQLite, utilizați comenzile dump și restore corespunzătoare din secțiunea bazei de date a manualului respectiv .

Pregătiți Restic și protejați-i acreditările

Instalați Restic și clientul MariaDB folosind sursa de pachete de încredere a distribuției dvs. Alegeți un depozit pe un alt disc sau o altă țintă de backup la distanță. Un depozit stocat doar pe serverul Nextcloud nu protejează împotriva pierderii serverului respectiv sau a spațiului de stocare al acestuia. Nu plasați depozitul în interiorul niciunuia dintre directorele din care se face backup.

Restic criptează datele din depozit, dar aveți nevoie de parola depozitului pentru a le restaura. Creați un fișier cu parole și păstrați o copie protejată în afara serverului, cum ar fi într-un manager de parole aprobat. Dacă parola este pierdută, depozitul criptat nu poate fi citit. Evitați să introduceți parola direct într-o linie de comandă, crontab sau script.

sudo install -d -m 700 /root/.config/restic
sudo install -m 600 /dev/null /root/.config/restic/nextcloud-password
sudo install -m 600 /dev/null /root/.config/restic/nextcloud.env

Plasați în siguranță parola Restic aleasă în fișierul de parole. Introduceți locația repozitoriului și calea către fișierul de parole în fișierul de mediu:

RESTIC_REPOSITORY=/mnt/backup/nextcloud
RESTIC_PASSWORD_FILE=/root/.config/restic/nextcloud-password

Pentru un backend la distanță, utilizați adresa URL și acreditările documentate ale repozitoriului respectiv, stocate cu permisiuni restricționate. Configurarea repozitoriului de documente Restic și variabila de mediu acceptată pentru fișierele de parolă sunt prezentate în ghidul său de pregătire a repozitoriului . Inițializați un nou repozitoriu o singură dată, nu la fiecare rulare:

set -a
. /root/.config/restic/nextcloud.env
set +a
restic init
O ilustrație a terminalului listează o cale către un depozit Restic, o cale către fișierul de parolă și comanda init restic.
Exemplu de setări pentru un depozit Restic criptat; parola în sine rămâne într-un fișier separat, protejat.

Și acreditările MariaDB necesită protecție. Configurați un fișier de opțiuni client care poate fi citit de root, cum ar fi /root/.my.cnfcu utilizatorul bazei de date, parola și gazda, apoi setați permisiunile sale la 600. Scriptul de mai jos transmite fișierul respectiv către mariadb-dump, astfel încât o parolă a bazei de date să nu apară în argumentele procesului.

Creați un script de rezervă care readuce Nextcloud în funcțiune

Salvați următoarele ca /usr/local/sbin/nextcloud-restic-backup. Ajustați NC_DATA_DIRși DB_NAMEpentru a se potrivi config/config.php. Scriptul activează modul de întreținere, exportă MariaDB, face copii de rezervă ale aplicației, datelor și dump-ului SQL temporar, apoi dezactivează modul de întreținere chiar dacă o comandă ulterioară eșuează.

#!/usr/bin/env bash
set -Eeuo pipefail
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

NC_DIR=/var/www/nextcloud
NC_DATA_DIR=/srv/nextcloud-data
DB_NAME=nextcloud
RESTIC_ENV=/root/.config/restic/nextcloud.env
DB_CNF=/root/.my.cnf

set -a
source "$RESTIC_ENV"
set +a
exec 9>/run/lock/nextcloud-restic.lock
flock -n 9 || exit 0

mountpoint -q /mnt/backup || {
  echo "Backup target is not mounted" >&2
  exit 1
}

install -d -m 700 /var/backups/nextcloud
STAGE_DIR=$(mktemp -d /var/backups/nextcloud/db.XXXXXX)
maintenance_on=0

cleanup() {
  if [[ "$maintenance_on" -eq 1 ]]; then
    sudo -u www-data php "$NC_DIR/occ" maintenance:mode --off ||
      logger -t nextcloud-restic "Could not disable maintenance mode"
  fi
  rm -rf "$STAGE_DIR"
}
trap cleanup EXIT
trap 'exit 130' INT
trap 'exit 143' TERM

sudo -u www-data php "$NC_DIR/occ" maintenance:mode --on
maintenance_on=1

mariadb-dump --defaults-extra-file="$DB_CNF"   --single-transaction --default-character-set=utf8mb4 "$DB_NAME"   > "$STAGE_DIR/nextcloud.sql"
test -s "$STAGE_DIR/nextcloud.sql"

restic backup "$NC_DIR" "$NC_DATA_DIR" "$STAGE_DIR" --tag nextcloud

Setați proprietatea și permisiunile astfel încât doar utilizatorul root să poată edita sau rula scriptul, apoi testați-l manual în timpul unei ferestre de mentenanță. Verificarea mountpointprevine trimiterea silențioasă a unui depozit mare de către un disc de rezervă lipsă în sistemul de fișiere local al serverului. Dacă depozitul dvs. este la distanță, nu montat local, înlocuiți verificarea respectivă cu o verificare fiabilă pentru backend.

Verificați căile înainte de prima rulare. Dacă folderul de date se află deja înăuntru /var/www/nextcloud, nu presupuneți că exemplul de cale este corect; utilizați directorul de date real din configurația Nextcloud. De asemenea, confirmați că aplicațiile personalizate sau temele stocate în afara directorului de aplicații sunt incluse explicit.

O ilustrație a unui terminal arată că Restic face o copie de rezervă a directorului aplicației Nextcloud, a unui director de date separat și a unui director de staging pentru dump-ul SQL.
Copia de rezervă Restic include aplicația, fișierele utilizatorului și dump-ul bazei de date creat pentru această rulare.

Programează cron și verifică rezultatul

După o rulare manuală reușită, adăugați o intrare crontab rădăcină cu sudo crontab -e. Acest exemplu pornește jobul zilnic la 2:30 dimineața folosind calea completă a scriptului și înregistrează ieșirea pentru depanare:

30 2 * * * /usr/local/sbin/nextcloud-restic-backup >> /var/log/nextcloud-restic.log 2>&1

Cron oferă un mediu limitat, așa că scriptul setează un set explicit PATHși încarcă singur setările Restic. Verificați dacă cron este activat pe distribuția dvs. și că acest timp nu se suprapune cu runner-ul de joburi în fundal al Nextcloud sau cu o altă sarcină de mentenanță. Manualul crontab Linux descrie formatul programării și mediul furnizat de cron.

Confirmați că jobul a fost finalizat verificând /var/log/nextcloud-restic.logo ieșire reușită și listând instantaneele recente:

sudo bash -lc 'set -a; source /root/.config/restic/nextcloud.env; set +a; restic snapshots'
sudo bash -lc 'set -a; source /root/.config/restic/nextcloud.env; set +a; restic check'

Funcția normală a Restic checkverifică structura depozitului. O citire completă a datelor durează mai mult și poate utiliza o lățime de bandă semnificativă pentru un depozit la distanță; programați restic check --read-dataperiodic sau utilizați pentru a verifica porțiuni în timp. Consultați documentația--read-data-subset Restic privind integritatea depozitului .

O listă de instantanee nu este un test de restaurare. Restaurați o instantanee recentă într-un director separat cu restic restore latest --target /tmp/nextcloud-restore-test, apoi confirmați că fișierele aplicației, directorul de date și dump-ul SQL sunt prezente. Nu restaurați peste o instalare live ca test. Pentru o recuperare reală, restaurați fișierele și baza de date ca un set potrivit; instrucțiunile de restaurare Nextcloud acoperă considerațiile privind recrearea bazei de date și sincronizarea clienților.

Această configurație oferă instantanee criptate repetabile, dar cron nu monitorizează propriile erori și Restic nu decide politica dvs. de retenție. Revizuiți jurnalul sau configurați alertele pentru rulările eșuate, păstrați o copie separată a acreditărilor depozitului și testați recuperarea la intervale regulate. Dacă fereastra de întreținere este prea lungă, utilizați instantanee coordonate ale sistemului de fișiere și un export consistent cu baza de date, conceput pentru platforma dvs. de stocare, în loc să faceți copii de rezervă live ale fișierelor modificate.

O ilustrație a terminalului arată o intrare cron zilnică pentru scriptul Nextcloud Restic alături de comanda restic snapshots.
Programul invocă zilnic scriptul deținut de utilizatorul root; listarea instantaneelor ​​este o verificare rapidă a faptului că rulările au fost înregistrate.

Lasă un comentariu

Construiți un profil AutoYaST reutilizabil pentru instalările SLES 15

Construiți un profil AutoYaST reutilizabil pentru instalările SLES 15

Transformați un sistem SLES 15 existent într-un profil AutoYaST revizuit, validați-l și utilizați-l pentru a implementa un server de testare cu mai puțini pași manuali.

Configurarea KVM SLES 15: Pornirea mașinilor virtuale selectate la pornire

Configurarea KVM SLES 15: Pornirea mașinilor virtuale selectate la pornire

Instalați instrumentele SLES 15 KVM și libvirt, activați serviciul gazdă corect și configurați mașinile virtuale selectate pentru a porni după o repornire.

Automatizați copiile de rezervă Nextcloud consistente cu Restic și Cron

Automatizați copiile de rezervă Nextcloud consistente cu Restic și Cron

Fă copii de rezervă ale fișierelor Nextcloud și MariaDB împreună, programează snapshot-uri Restic criptate cu cron și verifică recuperarea fără a risca serverul activ.

Copierea de rezervă și restaurarea unei cutii poștale Zimbra CE utilizând exporturile TGZ

Copierea de rezervă și restaurarea unei cutii poștale Zimbra CE utilizând exporturile TGZ

Exportați o cutie poștală individuală Zimbra Community Edition, validați copia de rezervă TGZ și restaurați elementele lipsă fără a suprascrie e-mailurile existente.

Permiteți utilizatorilor aprobați să creeze Jitsi Rooms cu autentificarea Keycloak

Permiteți utilizatorilor aprobați să creeze Jitsi Rooms cu autentificarea Keycloak

Permiteți doar conturilor aprobate să deschidă săli Jitsi Meet folosind Keycloak și autentificarea prin token, menținând în același timp posibilitatea participării invitaților atunci când este nevoie.

Sincronizați utilizatorii Active Directory cu ONLYOFFICE DocSpace prin LDAP

Sincronizați utilizatorii Active Directory cu ONLYOFFICE DocSpace prin LDAP

Conectați ONLYOFFICE DocSpace la Active Directory sau OpenLDAP, importați utilizatori și grupuri în siguranță, mapați câmpurile contului și programați o sincronizare fiabilă.

Adăugați fonturi pe serverul de documente ONLYOFFICE: Docker vs Linux

Adăugați fonturi pe serverul de documente ONLYOFFICE: Docker vs Linux

Instalați fonturi personalizate în ONLYOFFICE Document Server, comparați montările persistente din Docker cu copii directe, reconstruiți lista de fonturi și verificați rezultatul.

Puneți documentele ONLYOFFICE în spatele HAProxy fără a afecta editarea

Puneți documentele ONLYOFFICE în spatele HAProxy fără a afecta editarea

Configurați HAProxy HTTPS, anteturile de redirecționare, timeout-urile WebSocket și verificările de funcționare pentru ONLYOFFICE Docs, apoi verificați editarea și salvările.

Instalați și semnați module de kernel personalizate pe bootarea securizată SLES 15

Instalați și semnați module de kernel personalizate pe bootarea securizată SLES 15

Încărcați un modul kernel SLES 15 personalizat fără a dezactiva Secure Boot. Corelați kernelul care rulează, semnați fișierul .ko, înscrieți o cheie MOK și verificați încărcarea.

Redirecționare securizată SLES Syslog cu rsyslog și Mutual TLS

Redirecționare securizată SLES Syslog cu rsyslog și Mutual TLS

Trimiteți jurnalele de sistem SLES către un colector rsyslog la distanță prin TLS autentificat, cu verificări ale certificatelor, memorare temporară în caz de întreruperi și teste de livrare.