#! /bin/bash # # desktop.sh # Backup script for desktops. Meant to be sourced by our main backup script # Copyright (C) 2020 Vintage Salt # # Distributed under terms of the MIT license. # set -e export OUTDIR="$BACKUPSDIR/{{ inventory_hostname }}" retention=7 # 7-day retention period # Sanity checks if [ -z "$BACKUPSDIR" ]; then log "BACKUPSDIR was undefined. Run the main backup script instead of this one." return 1 fi if ! [ -d "$OUTDIR" ]; then if ! mkdir "$OUTDIR"; then log "Unable to find or create output directory: $OUTDIR" return 2 fi fi # Purge oldest backup if we need to currentbackupcount="$(ls -1 "$OUTDIR" | wc -l)" if (( currentbackupcount >= retention )); then lastbackup="$(find "$OUTDIR" -name \*.tar.gz 2>/dev/null | sort | head -n 1)" if [ -f "$lastbackup" ]; then log "Removing old backup: $lastbackup" rm "$lastbackup" fi fi # WE MAKE BACKUP NOW SERGEI for dir in /home/*; do username="$(basename -- "$dir")" tar czhf "$OUTDIR/desktop-$username-{{ inventory_hostname }}-$(date -Iseconds).tar.gz" "$dir/.backup/"* done