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