2024-07-14 17:20:26 +00:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
# Nastavení proměnných
|
2024-07-14 18:00:19 +00:00
|
|
|
# Vzdálený repozitář přes SSH s nestandardním portem
|
2024-07-14 18:03:54 +00:00
|
|
|
# Lokální repozitář
|
|
|
|
# export BORG_REPO=/mnt/backup/archos_repo
|
2024-07-14 18:01:18 +00:00
|
|
|
export BORG_REPO=ssh://user@user.your-storagebox.de:23/cesta/k_repo
|
2024-07-14 17:20:26 +00:00
|
|
|
# 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"
|
|
|
|
|
2024-07-14 18:00:19 +00:00
|
|
|
# Inicializace repozitáře, pokud ještě není inicializován
|
2024-07-14 18:01:18 +00:00
|
|
|
borg init -e repokey-blake2 "$BORG_REPO"
|
2024-07-14 18:00:19 +00:00
|
|
|
|
2024-07-14 17:20:26 +00:00
|
|
|
# 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 \
|
2024-07-14 18:01:18 +00:00
|
|
|
--keep-yearly 2
|
2024-07-14 17:20:26 +00:00
|
|
|
|
|
|
|
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}
|
2024-07-14 18:00:19 +00:00
|
|
|
|