Automatize backups consistentes do Nextcloud com Restic e Cron.

Para um backup confiável do Nextcloud, pause a atividade do usuário, exporte o banco de dados e use o Restic para capturar essa exportação juntamente com os diretórios de aplicativos e dados. Coloque a tarefa em um script com privilégios de root e agende-a com o cron; verifique os snapshots e execute um teste de restauração antes de confiar no agendamento.

Este exemplo pressupõe um servidor Debian ou Ubuntu, uma instalação direta do Nextcloud em /var/www/nextcloud, um diretório de dados separado em /srv/nextcloud-datae o MariaDB. Substitua esses valores pelos seus caminhos e nome de banco de dados reais. Os passos foram verificados com base no Manual de Administração do Nextcloud 35 e na documentação do Restic 0.19.1 em outubro de 2026.

Uma ilustração em um terminal escuro mostra o modo de manutenção do Nextcloud sendo ativado antes da exportação de um banco de dados MariaDB.
Uma ilustração em estilo de terminal das duas ações que iniciam um backup consistente: ativar o modo de manutenção e exportar o banco de dados.

O que deve conter um backup do Nextcloud?

As diretrizes de backup do Nextcloud listam a configuração, os dados, o banco de dados, o tema e quaisquer aplicativos personalizados como as partes importantes a serem mantidas. O backup do diretório completo do aplicativo geralmente inclui sua configuração e os aplicativos agrupados, mas verifique se os aplicativos personalizados, temas ou o diretório de dados estão localizados em outro lugar no seu servidor. Inclua todos os caminhos separadamente no comando Restic.

O modo de manutenção bloqueia as sessões existentes e impede novos logins enquanto o backup é executado. Isso reduz a probabilidade de alterações no banco de dados e nos arquivos em momentos diferentes, mas também torna o Nextcloud indisponível durante esse período. Para um grande banco de dados, agende a tarefa para um período de baixa atividade. Se o seu servidor tiver processos ou scripts externos que gravam diretamente no diretório de dados, pause-os também.

As instruções oficiais de backup do Nextcloud explicam os componentes e as opções de exportação do banco de dados. Este procedimento usa o MariaDB; para PostgreSQL, MySQL ou SQLite, use os comandos de dump e restore correspondentes na seção de banco de dados do respectivo manual .

Prepare a Restic e proteja suas credenciais.

Instale o Restic e o cliente MariaDB usando a fonte de pacotes confiável da sua distribuição. Escolha um repositório em um disco diferente ou um destino de backup remoto. Um repositório armazenado apenas no servidor Nextcloud não protege contra a perda desse servidor ou do seu armazenamento. Não coloque o repositório dentro de nenhum dos diretórios que estão sendo copiados.

O Restic criptografa os dados do repositório, mas você precisa da senha do repositório para restaurá-lo. Crie um arquivo de senha e mantenha uma cópia protegida fora do servidor, como em um gerenciador de senhas confiável. Se a senha for perdida, o repositório criptografado não poderá ser lido. Evite inserir a senha diretamente na linha de comando, no crontab ou em um 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

Armazene a senha escolhida para o Restic em um arquivo de senhas seguro. Insira o local do repositório e o caminho do arquivo de senhas no arquivo de ambiente:

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

Para um backend remoto, use o URL e as credenciais do repositório documentado desse backend, armazenadas com permissões restritas. O Restic documenta a configuração do repositório e a variável de ambiente de arquivo de senha compatível em seu guia de preparação de repositório . Inicialize um novo repositório apenas uma vez, não a cada execução.

set -a
. /root/.config/restic/nextcloud.env
set +a
restic init
Uma ilustração no terminal lista o caminho do repositório Restic, o caminho do arquivo de senhas e o comando restic init.
Exemplo de configurações para um repositório Restic criptografado; a senha em si permanece em um arquivo protegido separado.

As credenciais do MariaDB também precisam de proteção. Configure um arquivo de opções do cliente legível pelo root, como `/opt/client.conf`, /root/.my.cnfcom o usuário, a senha e o host do banco de dados e, em seguida, defina suas permissões como `true` 600. O script abaixo passa esse arquivo para o `client.conf` mariadb-dump, portanto, a senha do banco de dados não aparece nos argumentos do processo.

Crie um script de backup que restaure o Nextcloud ao serviço.

Salve o seguinte como /usr/local/sbin/nextcloud-restic-backup. Ajuste NC_DATA_DIRe DB_NAMEpara corresponder a config/config.php. O script habilita o modo de manutenção, exporta o MariaDB, faz backup do aplicativo, dos dados e do dump SQL temporário e, em seguida, desabilita o modo de manutenção mesmo se um comando posterior falhar.

#!/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

Defina a propriedade e as permissões para que somente o usuário root possa editar ou executar o script e, em seguida, teste-o manualmente durante uma janela de manutenção. Essa mountpointverificação impede que um disco de backup ausente envie silenciosamente um repositório grande para o sistema de arquivos local do servidor. Se o seu repositório for remoto em vez de montado localmente, substitua essa verificação por uma verificação confiável para o seu backend.

Revise os caminhos antes da primeira execução. Se a pasta de dados já estiver dentro do diretório de aplicativos /var/www/nextcloud, não assuma que o caminho de exemplo esteja correto; use o diretório de dados real da configuração do Nextcloud. Confirme também se os aplicativos ou temas personalizados armazenados fora do diretório de aplicativos estão explicitamente incluídos.

Uma ilustração no terminal mostra o Restic fazendo backup do diretório do aplicativo Nextcloud, de um diretório de dados separado e de um diretório temporário para o despejo do SQL.
O backup do Restic inclui o aplicativo, os arquivos do usuário e o dump do banco de dados criado para esta execução.

Agende uma tarefa cron e verifique o resultado.

Após uma execução manual bem-sucedida, adicione uma entrada no crontab como root sudo crontab -e. Este exemplo inicia a tarefa diariamente às 2h30, utilizando o caminho completo do script e registrando a saída para fins de solução de problemas:

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

O cron fornece um ambiente limitado, portanto o script define um horário explícito PATHe carrega as configurações do Restic por conta própria. Verifique se o cron está habilitado em sua distribuição e se esse horário não coincide com a execução de tarefas em segundo plano do Nextcloud ou com outra tarefa de manutenção. O manual do crontab do Linux descreve o formato do agendamento e o ambiente fornecido pelo cron.

Confirme se a tarefa foi executada corretamente verificando /var/log/nextcloud-restic.logse houve uma saída bem-sucedida e listando os snapshots recentes:

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'

O Restic realiza verificações normais checkna estrutura do repositório. Uma leitura completa dos dados leva mais tempo e pode consumir uma quantidade significativa de largura de banda do repositório remoto; agende verificações restic check --read-dataperiodicamente ou utilize-as para verificar partes do repositório ao longo do tempo. Consulte a documentação de integridade do repositório--read-data-subset do Restic .

A listagem de snapshots não é um teste de restauração. Restaure um snapshot recente para um diretório temporário separado com o comando `nextcloud restore` restic restore latest --target /tmp/nextcloud-restore-test, e confirme se os arquivos do aplicativo, o diretório de dados e o dump do SQL Server estão presentes. Não restaure sobre uma instalação em produção como teste. Para uma recuperação real, restaure os arquivos e o banco de dados como um conjunto único e sincronizado; as instruções de restauração do Nextcloud abrangem a recriação do banco de dados e considerações sobre a sincronização do cliente.

Essa configuração fornece snapshots criptografados repetíveis, mas o cron não monitora suas próprias falhas e o Restic não define sua política de retenção. Analise o log ou configure alertas para execuções com falha, mantenha uma cópia separada das credenciais do repositório e teste a recuperação regularmente. Se a janela de manutenção for muito longa, use snapshots coordenados do sistema de arquivos e uma exportação consistente com o banco de dados, projetada para sua plataforma de armazenamento, em vez de fazer backup de arquivos em constante alteração.

Uma ilustração no terminal mostra uma entrada cron diária para o script Nextcloud Restic, juntamente com o comando restic snapshots.
O agendamento invoca o script de propriedade do root diariamente; a listagem de instantâneos é uma verificação rápida para garantir que as execuções foram registradas.

Deixar um comentário

Diagnosticar um servidor SUSE que trava na tela de desligamento do systemd.

Diagnosticar um servidor SUSE que trava na tela de desligamento do systemd.

Utilize tarefas do systemd e o registro de inicialização anterior para localizar um serviço lento, uma montagem ou uma dependência de armazenamento e, em seguida, corrija-a sem mascarar a causa.

Permita apenas o tráfego da Web necessário para o seu servidor SLES 15

Permita apenas o tráfego da Web necessário para o seu servidor SLES 15

Use o firewall-cmd para inspecionar a zona ativa, permitir HTTP com segurança, preservar o acesso SSH e verificar se a regra persiste após uma reinicialização no SLES 15.

Diagnostique falhas de login do SLES PAM sem se bloquear o acesso.

Diagnostique falhas de login do SLES PAM sem se bloquear o acesso.

Rastreie uma falha do PAM até o serviço, a política de conta ou o provedor de identidade responsável e, em seguida, repare a configuração correta do SLES, preservando uma sessão de administrador em funcionamento.

Como configurar uma VPN WireGuard ponto a site no Debian 12

Como configurar uma VPN WireGuard ponto a site no Debian 12

Configure um servidor VPN WireGuard em Debian 12 para um cliente remoto. Configure chaves, encaminhamento IPv4, NAT com nftables, acesso ao firewall e verificações de conexão.

Sincronize usuários do Active Directory com o ONLYOFFICE DocSpace via LDAP

Sincronize usuários do Active Directory com o ONLYOFFICE DocSpace via LDAP

Conecte o ONLYOFFICE DocSpace ao Active Directory ou OpenLDAP, importe usuários e grupos com segurança, mapeie campos de conta e agende uma sincronização confiável.

Automatize backups consistentes do Nextcloud com Restic e Cron.

Automatize backups consistentes do Nextcloud com Restic e Cron.

Faça backup dos arquivos do Nextcloud e do MariaDB simultaneamente, agende snapshots criptografados do Restic com o cron e verifique a recuperação sem colocar o servidor em risco.

Faça backup e restaure uma caixa de correio do Zimbra CE usando exportações TGZ.

Faça backup e restaure uma caixa de correio do Zimbra CE usando exportações TGZ.

Exporte uma caixa de correio individual do Zimbra Community Edition, valide seu backup TGZ e restaure itens ausentes sem sobrescrever as mensagens existentes.

Permitir que usuários aprovados criem salas Jitsi com login do Keycloak

Permitir que usuários aprovados criem salas Jitsi com login do Keycloak

Permitir que apenas contas aprovadas iniciem salas do Jitsi Meet usando autenticação por Keycloak e token, mantendo a opção de entrada de convidados disponível quando necessário.

Adicionar fontes ao servidor de documentos ONLYOFFICE: Docker vs Linux

Adicionar fontes ao servidor de documentos ONLYOFFICE: Docker vs Linux

Instale fontes personalizadas no ONLYOFFICE Document Server, compare montagens persistentes do Docker com cópias diretas, reconstrua a lista de fontes e verifique o resultado.

Coloque documentos do ONLYOFFICE atrás do HAProxy sem interromper a edição.

Coloque documentos do ONLYOFFICE atrás do HAProxy sem interromper a edição.

Configure o HAProxy HTTPS, os cabeçalhos de encaminhamento, os tempos limite do WebSocket e as verificações de integridade para o ONLYOFFICE Docs e, em seguida, verifique a edição e o salvamento.