A (very) simple backup / history script for BTRFS
My /home partition is a BTRFS volume. Since it allows for very easy snapshotting, I decided to use it for providing a very simple history functionality. Note that this is not a REAL backup, because it doesn't protect against disk or machine failures. However it provides easy access to earlier versions of the file system. Here's how it works:
- Run it on a hourly basis
- Creates a separate snapshot for every hour the machine is running
- Creates a snapshot for every day of the month
- Creates a snapshot for every month of the year
The script is really very simple:
#!/bin/sh BASEDIR='/home/_snapshots' VOLUME='/home' TS_MONTH=`date '+m-%m'` TS_DAY=`date '+d-%d'` TS_HOUR=`date '+h-%H'` backup() { TIMESTAMP="$1" #echo "Backing up $VOLUME into $BASEDIR/$TIMESTAMP" if [ -d "$BASEDIR/$TIMESTAMP" ]; then btrfs subvolume delete "$BASEDIR/$TIMESTAMP" > /dev/null; fi /usr/bin/btrfs subvolume snapshot -r "$VOLUME" "$BASEDIR/$TIMESTAMP" > /dev/null } if [ "$1" = '' -o "$1" = 'm' ]; then backup "$TS_MONTH"; fi if [ "$1" = '' -o "$1" = 'd' ]; then backup "$TS_DAY" ; fi if [ "$1" = '' -o "$1" = 'h' ]; then backup "$TS_HOUR" ; fi