#!/bin/bash # # This script will gzip /mnt/backup/live/ # This script assumes /mnt/backup/snapshots/ is where we want to store archives # This script will only keep 7 days worth of archives # -- if you want to change this just change `MAX_BACKUPS` # # My personal setup: # -- has this running daily with cron at 00:30z # -- mounts /mnt/backup to it's own specific NFS share configured for the host # MAX_BACKUPS=7 tar -czf "/mnt/backup/snapshots/gwaine.snapshot.`date -Iseconds`.tar.gz" -C /mnt/backup/live . COUNT=$(ls -1 /mnt/backup/snapshots/*.tar.gz 2>/dev/null | wc -l) if [ "$COUNT" -gt $MAX_BACKUPS]; then # why not just delete the oldest file only Trey??? # well I'll tell you why! If I want to change MAX_BACKUPS from 7 to 3 # I'll have a whole bunch of extra archives I don't want to keep EXTRA=$((COUNT - MAX_BACKUPS)) ls -1T /mnt/backup/snapshots/*.tar.gz | tail -n "$EXTRA" | xargs rm -f fi