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
en:backup:server [2022/02/26 07:34] – [Server & desktop backup solutions] Added information about how long a backup will take. danen:backup:server [2022/07/05 19:24] (current) – [Script] -- prevent DokuWiki markup from rendering dan
Line 1: Line 1:
 ====== Server & desktop backup solutions ====== ====== Server & desktop backup solutions ======
  
-The first backup of the two options takes a while. The following ones are much faster, but it depends on how much you change. Only the changes are saved.+The first backups will take a while. The following ones are much faster, but it depends on how much you change. Only the changes are saved. 
 ===== rsync ===== ===== rsync =====
  
Line 109: 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 116: Line 115:
 The snapshots are stored remotely via ssh.  The snapshots are stored remotely via ssh. 
  
 +==== Script ====
  
-===== Crontab =====+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 =====
  
 Follow our [[en:server:services:crontab|crontab]] tutorial first and add the following for your root user: Follow our [[en:server:services:crontab|crontab]] tutorial first and add the following for your root user:
Line 123: Line 200:
 <code> <code>
 @daily /root/rsnapbackup.sh @daily /root/rsnapbackup.sh
 +</code>
 +<code>
 +@daily /root/bsnapbackup.sh
 </code> </code>
  
Line 132: Line 212:
   * ''@hourly''   * ''@hourly''
   * ''@reboot''   * ''@reboot''
 +
 +
 +===== Syncthing =====
 +
 +Follow our [[en:server:services:syncthing|Syncthing]] tutorial for both devices (backup server and your data device).
 +
 +
 +==== Add device ====
 +
 +Add the backup server to your client under ''Remote Devices''
 +
 +
 +==== Add folder ====
 +
 +  * Add a folder under ''Folder'' and select the folder you want to backup under ''General''
 +  * Select your backup server under ''Sharing''.
 +  * Under ''File Versioning'' you could add ''Staggered File Versioning'' which gives you more certainty, but have a look at https://docs.syncthing.net/users/versioning.html and choose what suits you best.
 +  * Also check ''Advanced'' and ''Folder type'' and again choose what suits you best. For example, Keepass can be used with ''Send & Receive'' if you want sync your database on both devices.
 +
 +
 +
 + 
  
  • en/backup/server.txt
  • Last modified: 2022/07/05 19:24
  • by dan