diff --git a/README.md b/README.md index 3f2f0c8..f977a56 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ A Nextcloud instance is also considered in the script; if this function is not u Of course, this script can be adapted to other systems. +CloudPanel v1 is obsolete and is no longer supported. + --- ## Usage diff --git a/backup.sh b/backup.sh deleted file mode 100644 index e23656b..0000000 --- a/backup.sh +++ /dev/null @@ -1,213 +0,0 @@ -#!/usr/bin/env bash -# -START=$(date +%s) -OS_DISTRO="$(lsb_release -ds)" -OS_ARCH="$(uname -m)" -NUM_CORES=$(nproc || echo 1) -# -############################################################## -# Title : BBNC - BorgBackup Nextcloud # -# Description : BorgBackup Nextcloud for Debian/Ubuntu # -# You need to adjust the settings in the # -# TODO section for yourself # -# Author : Mark Schenk # -# Date : 2022-03-03 09:04 # -# License : MIT # -# Version : 1.3.0 # -# # -# Usage : bash ./backup.sh # -############################################################## -#################### -# Helper functions # -#################### - -backup_VER="v1.3.0" - - -str_repeat() { - printf -v v "%-*s" "$1" "" - echo "${v// /$2}" -} - -displaytime() { - local T=$1 - local D=$((T / 60 / 60 / 24)) - local H=$((T / 60 / 60 % 24)) - local M=$((T / 60 % 60)) - local S=$((T % 60)) - - ((D > 0)) && printf '%d days ' $D - ((H > 0)) && printf '%d hours ' $H - ((M > 0)) && printf '%d minutes ' $M - ((D > 0 || H > 0 || M > 0)) && printf 'and ' - - printf '%d seconds\n' $S -} - -#################### -# Colors # -#################### - -FSI='\033[' -FRED="${FSI}1;31m" -FGREEN="${FSI}1;32m" -FYELLOW="${FSI}1;33m" -FBLUE="${FSI}1;36m" -FEND="${FSI}0m" - -###################### -# Check requirements # -###################### - -# Check if user is root -[ "$(id -u)" != "0" ] && { - echo "Error: You must be root or use sudo to run this script" - exit 1 -} - -command_exists() { - command -v "$@" > /dev/null 2>&1 -} - -# Make sure, that we are on Debian or Ubuntu -if ! command_exists apt-get; then - echo "This script cannot run on any other system than Debian or Ubuntu" - exit 1 -fi - -# Checking if lsb_release is installed or install it -if ! command_exists lsb_release; then - apt-get update && apt-get install -qq lsb-release > /dev/null 2>&1 -fi - -echo -ne "\ec" - -WELCOME_TXT="Welcome to BBNC - BorgBackup Nextcloud ${backup_VER}" -WELCOME_FEN=${#WELCOME_TXT} - -echo "" -echo " $(str_repeat "$WELCOME_FEN" "#")" -echo " $WELCOME_TXT" -echo " $(str_repeat "$WELCOME_FEN" "#")" -echo "" - -echo "" -echo " Detected OS : $OS_DISTRO" -echo " Detected Arch : $OS_ARCH" -echo " Detected Cores : $NUM_CORES" -echo "" -####################### -# TODO / Variables # -####################### - -# Which PHP version do you use e.g. 7.3 , 7.4 , 8.0, 8.1 -phpversion="8.0" -# Just adjust the domain here e.g. cloud.example.org or example.org -domain="nextcloud.domain.tld" -# Here you can assign a password (Borg passphrase) for the Borg backup archive. -backupPassword="P@ssw0rd" -# Here you have to specify the path to the Borg repository. - -backupRepo="/path/to/Repo" - -##################################################### -# TODO Database - MariaDB/MySQL or PostgreSQL # -##################################################### - -######################################################################################################################################################################### -# MariaDB / MySQL # -######################################################################################################################################################################### -# # -# DATABASES: Remove "#" for the correct database # -# # -# You can back up all databases or specific databases. For all databases enter "all". --> Optional only for MariaDB/MySQL databases stored in CloudPanel. # -databases="all" # -# # -echo -e "\e[93mStart MariaDB/MySQL database backup" # -clpctl db:backup --databases=$databases # -echo -e "${FGREEN}Backup has been finished successfully after $(displaytime $(($(date +%s) - START)))!${FEND}" # -######################################################################################################################################################################### - -######################################################################################################################################################################### -# PostgreSQL # -######################################################################################################################################################################### -# Optional only for PostgreSQL databases that are not stored in CloudPanel. # -# echo -e "\e[93mStart PostgreSQL database backup" # -# databases="DATABASENAME" # -# mkdir -p /home/cloudpanel/backups/$databases # -# postbackupdir="/home/cloudpanel/backups/$databases" # -# # -# sudo -u postgres pg_dump $databases > $postbackupdir/BBNC-$(date +%d-%m-%Y_%H-%M-%S).sql # -# echo -e "${FGREEN}Backup has been finished successfully after $(displaytime $(($(date +%s) - START)))!${FEND}" # -######################################################################################################################################################################### - - -####################### -# No Changes needed # -####################### - -clpLocation="/home/cloudpanel/htdocs/" -# You must edit this user if you are not using the default installation of CloudPanel. -# Otherwise, you can leave this value unchanged. -user="clp" - -####################### -# Script # -####################### - -# Nextcloud Maintenance -echo "" -sudo -u $user php$phpversion $clpLocation$domain/occ maintenance:mode --on -echo "" - - -export BORG_REPO=$backupRepo -export BORG_PASSPHRASE=$backupPassword - -info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; } -trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM - -info "Start backup" - - -# Here the backup is created, adjust this as you would like to have it - -borg create \ - --stats \ - --compression lz4 \ - ::'{hostname}-{now}' \ - /home/cloudpanel/backups \ - /home/cloudpanel/htdocs - -backup_exit=$? - -# Nextcloud Maintenance -echo "" -sudo -u $user php$phpversion $clpLocation$domain/occ maintenance:mode --off -echo "" -echo "End of the backup:" -echo "Storage space usage of the backups:" -echo "" -df -h ${backupRepo} - -info "Delete old backups" -# Automatically delete old backups -borg prune \ - --prefix '{hostname}-' \ - --keep-daily 7 \ - --keep-weekly 4 \ - --keep-monthly 6 - -prune_exit=$? - -# Information whether the backup worked. -global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit )) - -if [ ${global_exit} -eq 0 ]; then - echo -e "${FGREEN}Backup and/or Prune successfully completed after $(displaytime $(($(date +%s) - START)))!${FEND}" -elif [ ${global_exit} -eq 1 ]; then - echo -e "${FYELLOW}Backup and/or Prune ends with warnings after $(displaytime $(($(date +%s) - START)))!${FEND}" -else - echo -e "${FRED}Backup and/or Prune exits with errors after $(displaytime $(($(date +%s) - START)))!${FEND}" -fi -exit ${global_exit}