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