Skip to content
This repository has been archived by the owner on Dec 1, 2023. It is now read-only.

Nextcloud Backup & Restore

Veerendra edited this page Apr 21, 2023 · 1 revision

Backup

These are basic steps to perform backup nextcloud with restic

From nextcloud docs, there 2 location that need to be backed up. There are

  • Nextcloud data directory
  • Postgresql database dumps For these, we need to create 2 restic repos to maintain.

1. Initialize restic repos

NEXTCLOUD_DATA_RESTIC_REPO="/media/disk1/nextcloud_data_restic_repo"
NEXTCLOUD_PG_RESTIC_REPO="/media/disk1/nextcloud_pg_restic_repo"
BACKUP_DIR="/media/disk2/nextcloud"
RESTIC_PASSWORD_FILE="/home/veerendra/pass.txt"
  • NEXTCLOUD_DATA_RESTIC_REPO is the restic repo for nextcloud data directory backup
  • NEXTCLOUD_PG_RESTIC_REPO is the restic repo for postgresql database dumps backup
  • BACKUP_DIR backup directory of nextcloud data
  • RESTIC_PASSWORD_FILE Restic repo password file for both repos

Init the repos

$ restic -r $NEXTCLOUD_DATA_RESTIC_REPO init
$ restic -r $NEXTCLOUD_PG_RESTIC_REPO init

2. Set maintenance mode ON

$ docker exec -it -u www-data nextcloud php occ maintenance:mode --on

3. Run restic backups

Backup nextcloud data

$ restic -r $NEXTCLOUD_DATA_RESTIC_REPO \
      -p $RESTIC_PASSWORD_FILE \
      --json \
      backup $BACKUP_DIR

Backup postgresql database dump

$ docker exec postgres \
      bash -c 'pg_dump -c -U `cat $POSTGRES_USER_FILE` `cat $POSTGRES_DB_FILE`' | \
      restic backup --stdin --json \
      -r $NEXTCLOUD_PG_RESTIC_REPO \
      -p /home/veerendra/pass.txt \
      --stdin-filename db_postgres_nextcloud.sql

4. Unset maintenance mode

$ docker exec -it -u www-data nextcloud php occ maintenance:mode --off

This shell script automates above steps with metrics

Restore

TODO