70 lines
2.4 KiB
Bash
70 lines
2.4 KiB
Bash
|
#!/bin/sh
|
||
|
|
||
|
# Nastavení proměnných
|
||
|
# Můžete použít buď lokální repozitář nebo vzdálený repozitář přes SSH
|
||
|
# Upravte následující řádky podle vašich potřeb
|
||
|
|
||
|
# Lokální repozitář
|
||
|
# export BORG_REPO=/mnt/backup/archos_repo
|
||
|
|
||
|
# Vzdálený repozitář přes SSH
|
||
|
export BORG_REPO=ssh://user@remote-server:/cesta/k/repozitáři
|
||
|
|
||
|
# Poznámka: Z bezpečnostních důvodů není vhodné ukládat heslo přímo ve skriptu
|
||
|
# Doporučujeme použít Borg s `borg init --encryption=repokey` a nastavit heslo v interaktivním módu
|
||
|
# Alternativně můžete použít BORG_PASSPHRASE prostředí nastavené v systémových proměnných nebo z jiného bezpečného zdroje
|
||
|
# export BORG_PASSPHRASE='vaše_heslo'
|
||
|
|
||
|
# Pomocné funkce a ošetření chyb
|
||
|
info() { printf "\n%s %s\n\n" "$(date)" "$*" >&2; }
|
||
|
trap 'echo $(date) Backup interrupted >&2; exit 2' INT TERM
|
||
|
|
||
|
info "Starting backup"
|
||
|
|
||
|
# Zálohování důležitých adresářů do archivu pojmenovaného podle hostname a aktuálního data
|
||
|
borg create \
|
||
|
--verbose \
|
||
|
--filter AME \
|
||
|
--list \
|
||
|
--stats \
|
||
|
--show-rc \
|
||
|
--compression lz4 \
|
||
|
--exclude-caches \
|
||
|
--exclude '/home/*/.cache/*' \
|
||
|
--exclude '/var/cache/*' \
|
||
|
--exclude '/var/tmp/*' \
|
||
|
--exclude '/home/archos/.local/share/Trash' \
|
||
|
--exclude '/home/archos/Stažené' \
|
||
|
::'{hostname}-{now}' \
|
||
|
/home/archos
|
||
|
|
||
|
backup_exit=$?
|
||
|
|
||
|
info "Pruning repository"
|
||
|
|
||
|
# Použití příkazu `prune` pro udržování 7 denních, 4 týdenních a 6 měsíčních záloh tohoto stroje
|
||
|
# Prefix '{hostname}-' je důležitý pro omezení operace prune na zálohy tohoto stroje
|
||
|
borg prune \
|
||
|
--list \
|
||
|
--glob-archives '{hostname}-*' \
|
||
|
--show-rc \
|
||
|
--keep-daily 7 \
|
||
|
--keep-weekly 4 \
|
||
|
--keep-monthly 6 \
|
||
|
--keep-yearly 2
|
||
|
|
||
|
prune_exit=$?
|
||
|
|
||
|
# Použití nejvyššího exit kódu jako globálního exit kódu
|
||
|
global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit ))
|
||
|
|
||
|
if [ ${global_exit} -eq 0 ]; then
|
||
|
info "Backup and Prune finished successfully"
|
||
|
elif [ ${global_exit} -eq 1 ]; then
|
||
|
info "Backup and/or Prune finished with warnings"
|
||
|
else
|
||
|
info "Backup and/or Prune finished with errors"
|
||
|
fi
|
||
|
|
||
|
exit ${global_exit}
|