Como os dados do Nextcloud podem ser copiados e restaurados de forma independente? (Versionamento/instantâneos)

Como os dados do Nextcloud podem ser copiados e restaurados de forma independente? (Versionamento/instantâneos)

Sempre que vários usuários estão interagindo com uma instalação do Nextcloud, existe a possibilidade de erro. Potencialmente, um membro da família pode excluir uma foto antiga ou um colega de trabalho pode marcar acidentalmente uma tarefa ou evento do calendário, resultando em problemas para outros usuários.

Quando instantâneos completos do sistema de arquivos ou backups de todo o diretório Nextcloud estão disponíveis, eles podem ser usados ​​para restaurar um estado antigo de todo o servidor. Isso é bom no caso de uma falha completa do sistema.

No entanto, torna-se um problema se o problema só for percebido depois de um tempo e, nesse meio tempo, os usuários modificarem outros dados. Então, deve ser feita uma escolha entre resgatar dados antigos e destruir todo o progresso ou manter o estado atual.

ODocumentação Nextclouddescreve apenas uma maneira de restaurar toda a instalação.

Existe uma maneira de fazer backup automático de todos os dados do Nextcloud de maneira mais inteligente (arquivos, mensagens, calendários, tarefas, etc.) para que possam ser restaurados de forma independente? (Talvez até em estado online?)

Responder1

A restauração de um estado on-line exigiria, de fato, um backup completo do disco (o que, obviamente, poderia ser feito de forma incremental).

É claro que as coisas que realmente mudam através da interação do usuário são

  1. o banco de dados (contendo todas as informações do usuário, metadados de arquivo, permissões…)
  2. o armazenamento de dados
  3. próprio nextcloud (pois pode ser atualizado).

Podemos "resolver" 3. simplesmente exigindo um backup completo de todos os três sempre que você fizer backup do nextcloud (os formatos de banco de dados podem não ser compatíveis com versões anteriores).

Em uma configuração típica de nextcloud em contêiner, você teria dois ou três contêineres:

  1. o contêiner do banco de dados "DB", que precisa ser iniciado primeiro (normalmente executando o postgresql)
  2. o contêiner realmente executando nextcloud "NC", que se conecta ao banco de dados no banco de dados e tem o diretório de dados montado como volume externo "V"
  3. (um proxy reverso para permitir ocultar facilmente o nextcloud atrás de HTTPS e desacoplar o manuseio do certificado SSL do contêiner nextcloud)

Agora, um backup regular consistiria em

  1. parando a próxima nuvem, ou pelo menos congelando o NC, ou parando o NC completamente
  2. fazendo um backup de V (o que pode ser feito de maneira agradável e incremental – qualquer utilitário de backup moderno fará isso),
  3. dizendo ao seu banco de dados para fazer um backup ( pg_backup_start), que iniciará o backup em um estado consistente (o banco de dados garante que novas operações não influenciem o estado do backup)
  4. logo após iniciar a etapa 3., para restaurar a funcionalidade, reinicie o nextcloud (ou descongele ou reinicie o NC)
  5. faça o banco de dados gravar o dump em um arquivo ( pg_backup_stop); certifique-se de saber qual backup de dados pertence a qual backup de banco de dados (deve estar limpo de hora e data)

Geralmente, como o contêiner nextcloud real não será muito grande, de qualquer maneira, já que não contém os dados em si nem o banco de dados, também faria sentido salvá-lo apenas junto com os dados e os backups do banco de dados.

A restauração pode ser feita em uma máquina (virtual) completamente diferente, girando uma cópia do contêiner do banco de dados, restaurando o backup do banco de dados, entretanto descompactando o backup de dados e, depois que o banco de dados começar, iniciar o contêiner nextcloud com os dados montado.


Na verdade, como os tempos de execução do contêiner (podman, mas também Docker) permitem que você faça redes independentes, você pode ter quantos servidores de banco de dados rodando em paralelo quanto desejar; junto com um sistema de arquivos que você usa para o volume de dados que suporta instantâneos (ZFS, btrfs e coisas como instantâneos LVM + provisionamento fino XFS, bcachefs…), você pode então explorar o estado antigo em paralelo ao seu estado atual, sem que eles interfiram .

Responder2

Calendário, mensagens, etc.
Em teoriaum despejo de banco de dados deve criar entradas de calendário, etc. com uma ou mais consultas INSERT.
Você só precisa encontrar os INSERT/s corretos e tentar inseri-los novamente no banco de dados atual. (Eu faria backup do estado atual antes de tentar isso)

Na minha opinião, a lixeira e as versões oferecem boas opções para restaurar dados para os usuários.

Arquivos e lixeira
Por padrão, a lixeira está ativada. Quando um arquivo é excluído por um usuário, ele vai para a lixeira. Você pode especificar a idade para manter os arquivos na lixeira config/config.phpcom a entrada: trashbin_retention_obligation' => 'auto, 128',(verifique o manual para obter detalhes). No entanto, se a cota de espaço/usuário disponível for inferior a 50%, ela poderá ser limpa mais cedo ou se a administração estiver sendo executada occ trashbin:expire;occ trashbin:cleanupmanualmente. (ou pela escolha do usuário)
Eu não uso o calendário, talvez as entradas excluídas do calendário também terminem na lixeira e possam ser restauradas - não sei.

Arquivos e versão
Outra coisa é a “versão nextcloud app” que adiciona a opção de restaurar a versão mais antiga de um arquivo. A idade pode ser definida 'versions_retention_obligation' => 'auto, 128',em config.php. Habilite-o na seção de aplicativos nextcloud. Eu não usei este aplicativo, deveria ser como cópias de sombra.

Restaurando arquivos únicos
Contanto que você não use criptografia e use apenas contas locais, os dados do usuário serão armazenados no nextcloud/data/usernamediretório. Se você estiver conectado ao diretório ativo/openldap, o diretório é nextcloud/data/uuido uuid que pode ser resolvido no banco de dados. ( SELECT ldap_dn FROM oc_ldap_user_mapping WHERE owncloud_name='$U_ID')
Os arquivos podem ser restaurados manualmente do diretório de usuário do backup e copiados para o diretório de dados do usuário atual. Certifique-se de verificar todos os arquivos occ files:scanposteriormente.

Se a criptografia estiver habilitada - :) boa sorte.

informação relacionada