#!/bin/bash # # Maintenance operations at once a day. # This script called usually by the cron (but indirectly). # # Uses the rotate_folder utility which must be available on path. # Uses the acme wrapper script which have to exist in same folder # as this script. # # Author: Kovács Zoltán # Kovács Zoltán # License: GNU/GPL v3+ (https://www.gnu.org/licenses/gpl-3.0.en.html) # 2023-06-18 v1.0 # new: forked from the "Smartfront's DOCKER_skeleton" repository. # 2021-09-14 v0.2 # add: Checks the SSL web certificate (if any), renews it if necessary. # 2021-09-01 v0.1 Initial release # Checks the components. [[ -z "$(which dirname)" ]] && exit 1 [[ -z "$(which readlink)" ]] && exit 1 [[ -z "$(which xargs)" ]] && exit 1 # Where I'm? SCRPATH="$( cd -P "$( "$(which dirname)" "$0" )" && echo "$PWD" )" # Checks the SSL web certificate, renews it if necessery. # # Uses the acme wrapper script located in the same directory. ACME="$SCRPATH/acme" ACMELOG="$($(which dirname) "$SCRPATH")/logs/web/acme.log" if [ -n "$ACME" -a -x "$ACME" ]; then "$ACME" --cron >> "$ACMELOG" 2>&1 fi # Done with the certificate. # Daily backup operations. # # Launches the backup script. [[ -x "$SCRPATH/backup" ]] && "$SCRPATH/backup" # Done with backups. # Rotates the backup folders. # # Enumerates the folders and tries to rotate they content. BACKUPSROOT="$("$(which dirname)" "$SCRPATH")/storage/backups" #" for folder in $(ls -1 "$BACKUPSROOT" 2>/dev/null | $(which xargs) -0 ) "" do if [ -n "$folder" ]; then # Dereferenced absolute path. folder="$("$(which readlink)" -e "$BACKUPSROOT/$folder")" #" # Does it a folder with a prepared configuration? if [ -d "$folder" -a -r "$folder/.rotate_folder.conf" ]; then # Does the rotate job. if [ -x "$SCRPATH/rotate_folder" ]; then "$SCRPATH/rotate_folder" -f "$folder" >/dev/null elif [ -x "$(which rotate_folder)" ]; then "$(which rotate_folder)" -f "$folder" >/dev/null fi fi fi done # Done with rotating.