#!/bin/sh ####### ### Backup Seafile/Seafile Pro server on bare-metal (NOT DOCKER) ####### ### text formatting presents norm="\e[0m" bold="\e[1m" err="\e[1;31m" warn="\e[1;93m" ok="\e[32m" yellow="\e[93m" cyan="\e[96m" mag="\e[95m" ### functions # control seafile services (systemd) seafSvc () { if [ "$1" = "start" ]; then if ! systemctl start "${seafSvc}" >> "$logFile" 2>&1; then echo "error starting seafile service" exit 100 fi if ! systemctl start "${seafHub}" >> "$logFile" 2>&1; then echo "error starting seahub service" exit 101 fi elif [ "$1" = "stop" ]; then if ! systemctl stop "${seafHub}" >> "$logFile" 2>&1; then echo "error stopping seahub service" exit 103 fi if ! systemctl stop "${seafSvc}" >> "$logFile" 2>&1; then echo "error stopping seafile service" exit 102 fi fi } # generate dynamic timestamps stamp () { (date +%F" "%T) } ### end of functions ### default variable values # store logfile in the same directory as this script file using the same file # name as the script but with the extension '.log' scriptPath="$( CDPATH= cd -- "$( dirname -- "$0" )" && pwd -P )" scriptName="$( basename "$0" )" logFile="$scriptPath/${scriptName%.*}.log" # seafile service offlineBackup=0 seafSvc="seafile.service" seafHub="seahub.service" # seafile directories seafDir="/opt/seafile" dataDir="/var/seafile" ### start logging printf "${mag}[%s] --- Start %s execution ---${norm}\n" \ "$(stamp)" "$scriptName" >> "$logFile" printf "${cyan}[%s] -- [INFO] Log located at ${yellow}%s${cyan} --${norm}\n" \ "$(stamp)" "$logFile" >> "$logFile" ### stop seahub and sefile service exit 0