en:backup:server

This is an old revision of the document!


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.

Follow our rsync tutorial first.

The snapshots are stored locally and remotely via rsync daemon.

The script needs inetutils for hostname command.

pacman -S inetutils
echo "$password" > /etc/rsyncd.password
chmod 400 /etc/rsyncd.password

Add your details for DAEMONUSER=“” and DAEMONHOST=“”.

nano /root/rsnapbackup.sh
#!/bin/sh

## Based on:
## my own rsync-based snapshot-style backup procedure
## (cc) marcio rps AT gmail.com

# config vars

SRC="/"
SNAP="/root/backup/"
OPTS="--rltogiPhv --stats --delay-updates --delete --chmod=a-w"
EXCL="--exclude-from=/root/backup-filter.rule"
DAEMONUSER=""
DAEMONHOST=""
HOSTNAME=$(hostname)
MINCHANGES=1

# run this process with real low priority

ionice -c 3 -p $$
renice +12  -p $$

# List and save installed packages
pacman -Qn | awk '{ print $1 }' > /root/pkglist

# sync

rsync $OPTS $EXCL $SRC $SNAP/latest >> $SNAP/rsync.log

# check if enough has changed and if so
# make a hardlinked copy named as the date

COUNT=$( wc -l $SNAP/rsync.log|cut -d" " -f1 )
if [ $COUNT -gt $MINCHANGES ] ; then
        DATETAG=$(date +%Y-%m-%d-%H:%M)
        if [ ! -e $SNAP/$DATETAG ] ; then
                cp -al $SNAP/latest $SNAP/$DATETAG
                chmod u+w $SNAP/$DATETAG
                mv $SNAP/rsync.log $SNAP/$DATETAG
               chmod u-w $SNAP/$DATETAG
         fi
fi

rsync -avAXHP --delete --password-file=/etc/rsyncd.password $SNAP rsync://$DAEMONUSER@$DAEMONHOST/archive/backup/$HOSTNAME
chmod +x /root/rsnapbackup.sh

Exclude folder and files

This is an example. Add anything you don't need to backup. And change home $USER.

nano /root/backup-filter.rule
/dev/*
/proc/*
/sys/*
/tmp/*
/run/*
/mnt/*
/media/*
/lost+found
# root user
/root/backup/*
/root/.cache/*
# Home user
/home/$USER/.cache/*

Follow our borg tutorial first.

The snapshots are stored remotely via ssh.

Follow our crontab tutorial first and add the following for your root user:

@daily /root/rsnapbackup.sh
  • @yearly
  • @annually
  • @monthly
  • @weekly
  • @daily
  • @hourly
  • @reboot
  • en/backup/server.1645860871.txt.gz
  • Last modified: 2022/10/24 08:24
  • (external edit)