backup-scripts/backup.sh
2025-04-16 08:16:09 +00:00

87 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
STR="🏠${HOSTNAME}\n"
# Fonction pour résumer un log rclone avec espacement et emojis variés
summarize_save_log() {
local label="$1"
local emoji="$2"
local file="$3"
[[ ! -f "$file" ]] && return
local date=$(grep -oP '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}' "$file" | head -n1)
local source=$(grep ' => ' "$file" | cut -d' ' -f1 | tail -n1)
local total_checks=$(grep -oP 'Checks:\s+\K[0-9]+' "$file" | tail -n1)
local total_transferred=$(grep -oP 'Transferred:\s+\K[0-9]+' "$file" | tail -n1)
local total_size=$(grep -oP 'Transferred:\s+\K[\d.]+\s+\w+ / [\d.]+\s+\w+' "$file" | tail -n1)
local elapsed=$(grep -oP 'Elapsed time:\s+\K[0-9m\.s]+' "$file" | tail -n1)
STR+="${emoji} **${label}**\n"
[[ -n "$date" ]] && STR+=" Date : ${date}\n"
[[ -n "$source" ]] && STR+=" Source : ${source}\n"
[[ -n "$total_checks" ]] && STR+=" Checks : ${total_checks}\n"
[[ -n "$total_transferred" ]] && STR+=" Files : ${total_transferred}\n"
[[ -n "$total_size" ]] && STR+=" Size : ${total_size}\n"
[[ -n "$elapsed" ]] && STR+=" Time : ${elapsed}\n"
STR+="\n"
}
summarize_backup_log() {
local label="$1"
local emoji="$2"
local file="$3"
[[ ! -f "$file" ]] && return
if grep -q "unable to create lock in backend" "$file"; then
STR+="🚨 **${label}** - LOCK FAILURE\n Repository is already locked!\n\n"
return
fi
local date=$(grep -oP '^\s*-1\s+\K[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}' "$file" | tail -n1)
local source=$(grep ' => ' "$file" | awk '{print $1}' | tail -n1)
local files=$(awk '/^processed / {print $2}' "$file" | tail -n1)
local snapshot=$(grep '^snapshot ' "$file" | awk '{print $2}' | tail -n1)
STR+="${emoji} **${label}**\n"
[[ -n "$date" ]] && STR+=" Date : ${date}\n"
[[ -n "$source" ]] && STR+=" Source : ${source}\n"
[[ -n "$files" ]] && STR+=" Files : ${files}\n"
[[ -n "$snapshot" ]] && STR+=" Snapshot : ${snapshot}\n"
# Partie scan alignée
local scan=$(awk '
BEGIN {pad=" "}
/^Files: *[0-9]+ new/ {
print pad $0
getline; print pad $0
getline; print pad $0
getline; print pad $0
}
' "$file")
local added=$(grep '^Added to the repository:' "$file" | sed 's/^/ /')
if [[ -n "$scan$added" ]]; then
STR+="${scan}\n${added}\n"
fi
STR+="\n"
}
summarize_save_log "Copy 1" "💾" "/var/log/save.log"
summarize_save_log "Copy 2" "💾" "/var/log/save2.log"
summarize_save_log "Copy 3" "💾" "/var/log/save3.log"
summarize_backup_log "Back 1" "📼" "/var/log/backup.log"
summarize_backup_log "Back 2" "📼" "/var/log/backup2.log"
summarize_backup_log "Back 3" "📼" "/var/log/backup3.log"
# Nettoyage des caractères ANSI éventuels
STR=$(echo -e "$STR" | sed -r 's/\x1B\[[0-9;]*[a-zA-Z]//g')
#echo -en "$STR"
# Envoi de la requête POST avec la chaîne formatée
curl -X POST https://n8n.kube.ia86.cc/webhook/6f4afe18-8d4c-485a-90d0-b0e4f6243d77 \
--data-urlencode "save=${STR}"