#!/bin/bash # Fast backup using rsync if [ $# -ne 2 ]; then echo "Usage: $(basename "$0") /dev/sdX backup" exit 1 fi if [ "$(id -u)" -ne 0 ]; then echo "This script must be run as root." exit 1 fi rsync_options="-auvP --delete" device=$1 name=$2 # Note: `name` (nor `device`) should not contain spaces cryptsetup open --type luks $device $name if [ $? -ne 0 ]; then # bad device exit 1 fi mount /dev/mapper/$name /mnt/$name # TODO: stop backing up /var. Backup is just for Postgres and Mediawiki. # `/var` is used by too many applications. Specialy pacman that clutters it # with cached binaries. rsync $rsync_options /var /mnt/$name # <10G rsync $rsync_options /home /mnt/$name # <900G rsync $rsync_options /etc /mnt/$name # <20M echo "Backup complete." df -h umount /mnt/$name cryptsetup close $name echo "All done. Check \`$ lsblk\` before unplugging the storage device."