refactor(nextcloud): improve OCC maintenance script - add strict bash error handling - fix log file initialization for multimedia scan - fix incorrect completion log entries - add automatic apache restart via trap - improve variable naming and quoting - add maintenance script documentation - improve timestamp format - separate user-specific and summary logs - preserve multiline OCC output - remove obsolete email functionality - improve overall readability and reliability asd
150 lines
3.3 KiB
Bash
Executable File
150 lines
3.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
###############################################################################
|
|
# Nextcloud OCC Maintenance Script
|
|
#
|
|
# Performs:
|
|
# - files:cleanup
|
|
# - files:scan for selected users
|
|
# - occ check
|
|
# - mimetype updates
|
|
# - htaccess update
|
|
#
|
|
# Logs:
|
|
# /home/lucas/.LOG/
|
|
#
|
|
# Author: Lucas Faber
|
|
###############################################################################
|
|
|
|
set -Eeuo pipefail
|
|
|
|
LOGDIR="/home/lucas/.LOG"
|
|
DATE=$(date +"%Y%m%d_%H%M")
|
|
SUMMARY_LOG="$LOGDIR/log_occ_scan.log"
|
|
|
|
MIMI_LOG="$LOGDIR/log_occ_mimi_${DATE}.log"
|
|
LUCAS_LOG="$LOGDIR/log_occ_lucas_${DATE}.log"
|
|
MULTI_LOG="$LOGDIR/log_occ_multi_${DATE}.log"
|
|
|
|
NC_PATH="/nextcloud/nextcloud"
|
|
OCC="sudo -u www-data php $NC_PATH/occ"
|
|
|
|
STARTTIME=$(date +"%F %T")
|
|
|
|
mkdir -p "$LOGDIR"
|
|
|
|
: > "$MIMI_LOG"
|
|
: > "$LUCAS_LOG"
|
|
: > "$MULTI_LOG"
|
|
|
|
echo "===================================================="
|
|
echo "Nextcloud maintenance started: $STARTTIME"
|
|
echo "===================================================="
|
|
|
|
cleanup() {
|
|
echo
|
|
echo "Starting Apache..."
|
|
sudo systemctl start apache2
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
|
|
echo "Stopping Apache..."
|
|
sudo systemctl stop apache2
|
|
|
|
###############################################################################
|
|
# Cleanup
|
|
###############################################################################
|
|
|
|
echo
|
|
echo "Running files:cleanup..."
|
|
RET1=$($OCC files:cleanup)
|
|
|
|
###############################################################################
|
|
# User scans
|
|
###############################################################################
|
|
|
|
echo
|
|
echo "Starting file scans..."
|
|
|
|
{
|
|
$OCC files:scan -vvv mimi >> "$MIMI_LOG" 2>&1
|
|
echo "$(date): Mimi finished" >> "$MIMI_LOG"
|
|
} &
|
|
PID1=$!
|
|
|
|
{
|
|
$OCC files:scan -vvv lucas >> "$LUCAS_LOG" 2>&1
|
|
echo "$(date): Lucas finished" >> "$LUCAS_LOG"
|
|
} &
|
|
PID2=$!
|
|
|
|
{
|
|
$OCC files:scan -vvv multimedia >> "$MULTI_LOG" 2>&1
|
|
echo "$(date): Multimedia finished" >> "$MULTI_LOG"
|
|
} &
|
|
PID3=$!
|
|
|
|
wait "$PID1"
|
|
wait "$PID2"
|
|
wait "$PID3"
|
|
|
|
echo "All scans completed."
|
|
|
|
###############################################################################
|
|
# Maintenance
|
|
###############################################################################
|
|
|
|
echo
|
|
echo "Running occ check..."
|
|
RET4=$($OCC check)
|
|
|
|
echo
|
|
echo "Updating mimetype database..."
|
|
RET5=$($OCC maintenance:mimetype:update-db)
|
|
|
|
echo
|
|
echo "Updating .htaccess..."
|
|
RET6=$($OCC maintenance:update:htaccess)
|
|
|
|
echo
|
|
echo "Updating mimetype JS..."
|
|
RET7=$($OCC maintenance:mimetype:update-js)
|
|
|
|
ENDTIME=$(date +"%F %T")
|
|
|
|
###############################################################################
|
|
# Summary log
|
|
###############################################################################
|
|
|
|
{
|
|
echo
|
|
echo "===================================================="
|
|
echo "NEXTCLOUD MAINTENANCE REPORT"
|
|
echo "===================================================="
|
|
echo
|
|
echo "Start: $STARTTIME"
|
|
echo "End: $ENDTIME"
|
|
echo
|
|
echo "===== FILES:CLEANUP ====="
|
|
echo "$RET1"
|
|
echo
|
|
echo "===== OCC CHECK ====="
|
|
echo "$RET4"
|
|
echo
|
|
echo "===== MIMETYPE UPDATE DB ====="
|
|
echo "$RET5"
|
|
echo
|
|
echo "===== UPDATE HTACCESS ====="
|
|
echo "$RET6"
|
|
echo
|
|
echo "===== MIMETYPE UPDATE JS ====="
|
|
echo "$RET7"
|
|
echo
|
|
} >> "$SUMMARY_LOG"
|
|
|
|
echo
|
|
echo "Maintenance completed successfully."
|
|
echo "Summary written to:"
|
|
echo " $SUMMARY_LOG"
|