45 lines
1.1 KiB
Bash
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 {} \;
|