en:backup:server

This is an old revision of the document!


Server & desktop backup solutions

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.1645842121.txt.gz
  • Last modified: 2022/10/24 08:24
  • (external edit)