Nextcloud 데이터를 독립적으로 백업하고 복원하는 방법은 무엇입니까? (버전 관리/스냅샷)

Nextcloud 데이터를 독립적으로 백업하고 복원하는 방법은 무엇입니까? (버전 관리/스냅샷)

여러 사용자가 Nextcloud 설치와 상호 작용할 때마다 오류가 발생할 수 있습니다. 가족 구성원이 오래된 사진을 삭제하거나 동료가 실수로 작업이나 캘린더 일정을 확인하여 다른 사용자에게 문제를 일으킬 수 있습니다.

전체 파일 시스템 스냅샷 또는 전체 Nextcloud 디렉터리의 백업을 사용할 수 있는 경우 이를 사용하여 전체 서버를 이전 상태로 복원할 수 있습니다. 시스템이 완전히 충돌하더라도 괜찮습니다.

그러나 시간이 지나서 문제가 발견되어 사용자가 다른 데이터를 수정하면 문제가 발생합니다. 그런 다음 이전 데이터를 복구하고 모든 진행 상황을 파기하거나 현재 상태를 유지하는 것 중에서 선택해야 합니다.

이것Nextcloud 문서전체 설치를 복원하는 방법만 설명합니다.

모든 Nextcloud 데이터(파일, 메시지, 캘린더, 작업 등)를 보다 지능적으로 자동으로 백업하여 독립적으로 복원할 수 있는 방법이 있습니까? (어쩌면 온라인에서도요?)

답변1

온라인 상태를 복원하려면 전체 디스크 백업이 필요합니다(물론 증분식으로 수행 가능).

물론 사용자 상호작용을 통해 실제로 변경되는 사항은 다음과 같습니다.

  1. 데이터베이스(모든 사용자 정보, 파일 메타데이터, 권한 등 포함)
  2. 데이터 저장고
  3. nextcloud 자체(업데이트될 수 있음)

3. nextcloud를 백업할 때마다 세 가지 모두의 전체 백업을 요구함으로써 "해결"할 수 있습니다(데이터베이스 형식은 이전 버전과 호환되지 않을 수 있음).

일반적인 컨테이너화된 nextcloud 설정에는 2~3개의 컨테이너가 있습니다.

  1. 데이터베이스 컨테이너 "DB"를 먼저 시작해야 합니다(일반적으로 postgresql 실행).
  2. 실제로 DB의 데이터베이스에 연결하고 데이터 디렉토리를 외부 볼륨 "V"로 마운트하는 nextcloud "NC"를 실행하는 컨테이너
  3. (역방향 프록시를 사용하면 HTTPS 뒤에 nextcloud를 쉽게 숨기고 nextcloud 컨테이너에서 SSL 인증서 처리를 분리할 수 있습니다)

이제 정기 백업에는 다음이 포함됩니다.

  1. nextcloud를 중지하거나 최소한 NC를 동결하거나 NC를 완전히 중지하세요.
  2. V를 백업합니다(증분 백업은 잘 작동합니다. 모든 최신 백업 유틸리티에서 가능합니다).
  3. 데이터베이스에 백업( pg_backup_start)을 수행하도록 지시하면 일관된 상태로 백업이 시작됩니다. 데이터베이스는 새 작업이 백업 상태에 영향을 미치지 않도록 보장합니다.
  4. 3단계 시작 후 기능 복원을 위해 nextcloud 재시작(또는 동결해제, NC 재시작)
  5. 데이터베이스가 덤프를 파일에 쓰도록 합니다( pg_backup_stop). 어떤 데이터 백업이 어떤 데이터베이스 백업에 속하는지 확인하십시오(시간과 날짜가 명확해야 함).

일반적으로 실제 nextcloud 컨테이너는 어차피 그다지 크지 않을 것이고, 데이터 자체도 데이터베이스도 포함하지 않기 때문에 데이터와 데이터베이스의 백업과 함께 저장하는 것도 의미가 있습니다.

그런 다음 데이터베이스 컨테이너의 복사본을 시작하고, 데이터 백업의 압축을 풀면서 데이터베이스 백업을 복원한 다음, 데이터베이스가 시작된 후 데이터로 nextcloud 컨테이너 설치를 시작하여 완전히 다른(가상) 머신에서 복원을 수행할 수 있습니다.


실제로 컨테이너 런타임(podman 및 Docker)을 사용하면 독립적인 네트워킹을 수행할 수 있으므로 LVM 스냅샷 + XFS 씬 프로비저닝, bachefs...)를 함께 탐색할 수 있는 만큼 많은 데이터베이스 서버를 병렬로 실행할 수 있습니다. 이전 상태는 현재 상태와 병행하여 방해받지 않고 유지됩니다.

답변2

캘린더, 메시지 등
이론적으로데이터베이스 덤프에서는 하나 이상의 INSERT 쿼리를 사용하여 달력 항목 등을 생성해야 합니다.
올바른 INSERT를 찾아서 현재 데이터베이스에 다시 삽입하기만 하면 됩니다. (시도하기 전에 현재 상태를 백업하겠습니다)

제 생각에는 휴지통과 버전은 사용자에게 데이터 복구를 위한 좋은 옵션을 제공합니다.

파일 및 휴지통
기본적으로 휴지통은 활성화되어 있습니다. 사용자가 파일을 삭제하면 해당 파일은 휴지통에 보관됩니다. config/config.php다음 항목을 사용하여 휴지통에 있는 파일의 보존 기간을 지정할 수 있습니다 . ( trashbin_retention_obligation' => 'auto, 128',자세한 내용은 설명서 참조) 단, 여유 공간/사용자 할당량이 50% 미만이거나 수동으로 관리를 실행하는 경우 조기 정리가 발생할 수 있습니다 occ trashbin:expire;occ trashbin:cleanup. (또는 사용자 선택에 따라)
저는 캘린더를 사용하지 않습니다. 어쩌면 삭제된 캘린더 항목도 휴지통에 들어가 복구될 수 있습니다. - 잘 모르겠습니다.

파일 및 버전
또 다른 것은 이전 버전의 파일을 복원하는 옵션을 추가하는 "버전 nextcloud 앱"입니다. 나이는 를 'versions_retention_obligation' => 'auto, 128',사용하여 설정할 수 있습니다 config.php. nextcloud 애플리케이션 섹션에서 활성화하세요. 저는 이 앱을 사용해본 적이 없습니다. 섀도 복사본과 같을 것입니다.

단일 파일 복구
암호화를 사용하지 않고 로컬 계정만 사용하는 한 사용자 데이터는 이 nextcloud/data/username디렉터리에 저장됩니다. Active Directory/openldap에 연결하는 경우 해당 디렉터리는 nextcloud/data/uuid데이터베이스에서 확인할 수 있는 UUID입니다. ( SELECT ldap_dn FROM oc_ldap_user_mapping WHERE owncloud_name='$U_ID')는
백업된 사용자 디렉터리에서 파일을 수동으로 복원하고 현재 사용자 데이터 디렉터리에 복사할 수 있습니다. 나중에 모든 파일을 검사하십시오 occ files:scan.

암호화가 활성화된 경우 - :) 행운을 빕니다.

관련 정보