linux_helper/skripty/incremental_backup.sh
2024-06-27 22:11:31 +02:00

45 lines
1.1 KiB
Bash

#!/bin/bash
# Nastavení proměnných
ZDROJ="/cesta/k/zdrojovému/adresáři"
CIL="/cesta/k/záložnímu/adresáři"
POSLEDNI_ZALOHA=$(ls -td $CIL/backup_* | head -1)
# Seznam souborů a adresářů k vyloučení ze zálohování
EXCLUDE_LIST=(
"cache"
"*.tmp"
"node_modules"
"*.log"
)
# Sestavení příkazů --exclude pro rsync
EXCLUDES=()
for item in "${EXCLUDE_LIST[@]}"; do
EXCLUDES+=("--exclude=$item")
done
# Datum a čas
DATUM=$(date +"%Y-%m-%d_%H-%M-%S")
# Vytvoření adresáře pro zálohu s datem a časem
NOVY_CIL="$CIL/backup_$DATUM"
mkdir -p "$NOVY_CIL"
# Kontrola poslední zálohy a použití --link-dest pro inkrementální zálohy
if [ -n "$POSLEDNI_ZALOHA" ]; then
rsync -av --delete --link-dest="$POSLEDNI_ZALOHA" "${EXCLUDES[@]}" "$ZDROJ/" "$NOVY_CIL/"
else
rsync -av --delete "${EXCLUDES[@]}" "$ZDROJ/" "$NOVY_CIL/"
fi
# Výpis stavu zálohy
if [ $? -eq 0 ]; then
echo "Zálohování úspěšně dokončeno: $DATUM"
else
echo "Zálohování selhalo: $DATUM"
fi
# Volitelně: Odstranění starých záloh (např. starších než 7 dní)
find "$CIL" -type d -name "backup_*" -mtime +7 -exec rm -rf {} \;