NextCloud auf einem nackten Ubuntu mit SSL installieren

Backups

Auch wenn meine eigentlichen Inhaltsdaten auf einem S3-Ordner liegen, und dort separat gesichert werden könnten, so will ich trotzdem die lokale Datenbank und die lokale Konfiguration sichern, schon auch deshalb, um überhaupt eine Zuordnung der Dateien im S3-Ordner zu den tatsächlichen Dateinamen und -Pfaden zu sichern.

Ich verwende Snappy, deshalb gilt hier diese Anleitung:

How to backup your instance

Die Anleitung im regulären Handbuch trifft auf Snappy so direkt wohl nicht zu.

Eine generelle Anleitung für ein Backup-Skript um nach AWS S3 zu sichern findet sich hier:

https://www.ideyatech.com/blog/2016/11/01/creating-automated-backup-scripts-linux-s3/

Dieses Skript passe ich mir ein bisschen an, um es anschließend als cronjob regelmäßig laufen zu lassen:

sudo crontab -e

und anschließend im Editor dann in die cron-Datei das hier einzufügen:

0 1 * * * /home/zeta/backup.sh > /home/zeta/backup.log 2>&1

Mein Backupskript selbst schaut dann grob so aus:

#!/bin/sh

# ----------

# https://www.ideyatech.com/creating-automated-backup-scripts-linux-s3/
# https://github.com/nextcloud/nextcloud-snap/wiki/How-to-backup-your-instance

# sudo crontab -e
# 0 1 * * * /home/zeta/backup.sh > /home/zeta/backup.log 2>&1
# <RETURN-Taste!>

echo '----------------------------------'
echo 'started'
echo ' '

# backup folder within the server where backup files are store
BAK_DEST=/tmp/backup

# Wo Nextcloud sein Backup speichert. Inhalte werden von diesem Skript 
# vorher gelöscht.
NEXTCLOUD_BACKUP_SOURCE=/var/snap/nextcloud/common/backups

# folders for backup, can be comma separated for multiple folders
BAK_SOURCES=$NEXTCLOUD_BACKUP_SOURCE,/var/zeta

# API Keys for S3
export AWS_ACCESS_KEY_ID="*** REMOVED ***"
export AWS_SECRET_ACCESS_KEY="*** REMOVED ***"

#s3 bucket name that contains backup
S3_BUCKET=my-bucket-name/my-folder-in-the-bucket

#number of days to keep archives
KEEP_DAYS=3

# ----------

#script variables
BAK_DATE=`date +%F`
BAK_DATETIME=`date +%F-%H%M`
BAK_FOLDER=${BAK_DEST}/${BAK_DATE}
DAYOFYEAR=`date +%j`
DAYOFYEARINT=$(echo $DAYOFYEAR | sed 's/^0*//')
MYIDX=$(($DAYOFYEARINT % $KEEP_DAYS))
ROLLING_FOLDER=backup-${MYIDX}

## echo 'DOY: ' ${DAYOFYEAR}
## echo 'DOYI: ' ${DAYOFYEARINT}
## echo 'Index : ' ${MYIDX}
## echo 'Ordnername: ' ${ROLLING_FOLDER}
## exit 1


# CREATE folder where backup database is to be place
echo 'Creating temp local backup to folder ' ${BAK_FOLDER}
rm -f -R ${BAK_FOLDER}
mkdir -p ${BAK_FOLDER}

# ---------

# Löschen des aktuellen Tagesordners.
echo 'Removing current day folder on S3'
# "which aws" gibt auf der Konsole den Pfad aus.
/usr/bin/aws s3 rm s3://${S3_BUCKET}/${ROLLING_FOLDER} --recursive

# Löschen des lokalen Nextcloud-Backup-Ziels.
# Nextcloud-Export wird dann dahinein etwas schreiben.
rm -rfv $NEXTCLOUD_BACKUP_SOURCE/*

# Nextcloud-Backup aufrufen.
/snap/bin/nextcloud.export -abc

# ---------

echo 'Archiving folders'

FOLDERS=$(echo $BAK_SOURCES | tr "," "\n")
i=0
for F in $FOLDERS
do
  echo ' '
  echo 'Archiving ' ${F} '...'
  i=`expr ${i} + 1`

  tar czPf ${BAK_FOLDER}/FILE_${i}_${BAK_DATETIME}.tar.gz ${F}
  echo 'Created tar file ' ${BAK_FOLDER}/FILE_${i}_${BAK_DATETIME}.tar.gz

  # "which aws" gibt auf der Konsole den Pfad an.
  /usr/bin/aws s3 cp ${BAK_FOLDER}/FILE_${i}_${BAK_DATETIME}.tar.gz s3://${S3_BUCKET}/${ROLLING_FOLDER}/FILE_${i}_${BAK_DATETIME}.tar.gz --storage-class REDUCED_REDUNDANCY
done

echo 'Deleting temp local backup folder ' ${BAK_FOLDER}
rm -f -R ${BAK_FOLDER}

echo ' '
echo 'finished'
echo '----------------------------------'