en:backup:server

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revisionBoth sides next revision
en:backup:server [2022/02/26 23:07] – added syncthing danen:backup:server [2022/05/29 19:42] – [Script] dan
Line 110: Line 110:
  
 ===== borg ===== ===== borg =====
- 
-<alert type="info" icon="fa fa-wrench">Work in progress</alert> 
  
 Follow our [[en:server:services:borg|borg]] tutorial first. Follow our [[en:server:services:borg|borg]] tutorial first.
Line 117: Line 115:
 The snapshots are stored remotely via ssh.  The snapshots are stored remotely via ssh. 
  
 +==== Script ====
 +
 +Don't forget to create the borg repo first and add the credentials to the script.
 +<code>
 +borg init --encryption=keyfile-blake2 --make-parent-dirs ssh://username@remote.host.address:$port>/~/backups/borg/{hostname}
 +</code>
 +
 +Add your excluded folders/files ''--exclude '/home/*/.cache/*' \'' and under ''::'{hostname}-{now}' \'' add folders/files you want to backup. 
 +<code>
 +#!/bin/sh
 +
 +# Setting this, so the repo does not need to be given on the commandline:
 +export BORG_REPO=ssh://username@example.com:2022/~/backups/borg/{hostname}
 +
 +# See the section "Passphrase notes" for more infos.
 +export BORG_PASSPHRASE='XYZl0ngandsecurepa_55_phrasea&&123'
 +
 +# some helpers and error handling:
 +info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; }
 +trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM
 +
 +info "Starting backup"
 +
 +# Backup the most important directories into an archive named after
 +# the machine this script is currently running on:
 +
 +borg create                         \
 +    --verbose                       \
 +    --filter AMEhsx                 \
 +    --list                          \
 +    --stats                         \
 +    --progress                      \
 +    --verbose                       \
 +    --show-version                  \
 +    --show-rc                       \
 +    --compression zstd,11           \
 +    --exclude-caches                \
 +    --exclude '/home/*/.cache/*'    \
 +    --exclude '/var/tmp/*'          \
 +                                    \
 +    ::'{hostname}-{now}'            \
 +    /etc                            \
 +    /home                           \
 +    /root                           \
 +    /var                            \
 +
 +backup_exit=$?
 +
 +info "Pruning repository"
 +
 +# Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly
 +# archives of THIS machine. The '{hostname}-' prefix is very important to
 +# limit prune's operation to this machine's archives and not apply to
 +# other machines' archives also:
 +
 +borg prune                          \
 +    --list                          \
 +    --prefix '{hostname}-'          \
 +    --show-rc                       \
 +    --keep-daily    7               \
 +    --keep-weekly                 \
 +    --keep-monthly  6               \
 +    --keep-yearly                 \
 +
 +prune_exit=$?
 +
 +# use highest exit code as global exit code
 +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}
 +</code>
 ===== Crontab - rsync and borg ===== ===== Crontab - rsync and borg =====
  
  • en/backup/server.txt
  • Last modified: 2022/07/05 19:24
  • by dan