#!/bin/bash # # Copyright 2014-2023 Security Onion Solutions, LLC # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see .. /usr/sbin/so-common {% set BACKUPLOCATIONS = salt['pillar.get']('backup:locations', {}) %} TODAY=$(date '+%Y_%m_%d') BACKUPFILE="/nsm/backup/so-config-backup-$TODAY.tar" MAXBACKUPS=7 # Create backup dir if it does not exist mkdir -p /nsm/backup # If we haven't already written a backup file for today, let's do so if [ ! -f $BACKUPFILE ]; then # Create empty backup file tar -cf $BACKUPFILE -T /dev/null # Loop through all paths defined in global.sls, and append them to backup file {%- for LOCATION in BACKUPLOCATIONS %} tar -rf $BACKUPFILE {{ LOCATION }} {%- endfor %} tar -rf $BACKUPFILE /etc/pki tar -rf $BACKUPFILE /etc/salt tar -rf $BACKUPFILE /nsm/kratos fi # Find oldest backup files and remove them NUMBACKUPS=$(find /nsm/backup/ -type f -name "so-config-backup*" | wc -l) while [ "$NUMBACKUPS" -gt "$MAXBACKUPS" ]; do OLDESTBACKUP=$(find /nsm/backup/ -type f -name "so-config-backup*" -type f -printf '%T+ %p\n' | sort | head -n 1 | awk -F" " '{print $2}') rm -f $OLDESTBACKUP NUMBACKUPS=$(find /nsm/backup/ -type f -name "so-config-backup*" | wc -l) done