refactor(nextcloud): improve OCC maintenance script

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
This commit is contained in:
Lucas Faber committed 2026-09-25 12:15:40 +02:00
1 parent 653a367d92
commit e5629b73ae
2 files changed
+149 -51

No files matched your search

+149
View File
@@ -0,0 +1,149 @@
#!/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"