Assorted shell and Python scripts
at main 1.3 kB view raw
1#!/usr/bin/env bash 2 3SNAP_DATE=$(date '+%Y-%m-%d_%H-%M-%S') 4 5# Check if device is mounted 6if ! grep "/mnt/storage" /etc/mtab >/dev/null; then 7 logger -p error -t btrfs_backup "ERROR: /mnt/storage is not mounted." 8 exit 1 9fi 10 11create_snapshot() { 12 if ! btrfs subvolume snapshot -r "$1" "${1}/.snapshots/$2-$SNAP_DATE" >/dev/null; then 13 echo "[$(date '+%Y-%m-%d %H:%M:%S')] Error creating snapshot of $1" | tee -a "$LOGFILE" 14 notify-send -i computer-fail "Error creating snapshot of $1" 15 exit 1 16 else 17 echo "[$(date '+%Y-%m-%d %H:%M:%S')] Create snapshot of $1: OK" | tee -a "$LOGFILE" 18 fi 19} 20 21send_snapshot() { 22 mkdir -p "/srv/backup/$SNAP_DATE" 23 if ! btrfs send -q "${1}/.snapshots/$2-$SNAP_DATE" | btrfs receive -q "/srv/backup/$SNAP_DATE"; then 24 echo "[$(date '+%Y-%m-%d %H:%M:%S')] Error sending snapshot of $1 to /srv/backup" | tee -a "$LOGFILE" 25 notify-send -i computer-fail "Error sending snapshot of $1 to /srv/backup" 26 exit 1 27 else 28 echo "[$(date '+%Y-%m-%d %H:%M:%S')] Send snapshot of $1 to /srv/backup: OK" | tee -a "$LOGFILE" 29 fi 30} 31 32# Create root and home snapshots 33create_snapshot "/" "root" 34create_snapshot "/home" "home" 35 36# Send root and home snapshots 37send_snapshot "/" "root" 38send_snapshot "/home" "home"