#!/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 {} \;