#!/bin/bash
#
# backup-script system for cloning systems using rsync
-# Copyright (c)2008-2016 Alexander Barton, alex@barton.de
+# Copyright (c)2008-2018 Alexander Barton, alex@barton.de
#
# 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
default_generations=0
default_target="/var/backups"
+# Set shell options.
+shopt -s nullglob
+
# Search configuration file (last one is used as default!)
for conf in \
"/usr/local/etc/backup-script.conf" \
done
Usage() {
- echo "Usage: $NAME [-q|--quiet] [-v|--verbose] [<system> [<system> [...]]]"
+ echo "Usage: $NAME [-q|--quiet] [-v|--verbose] [<job> [<job> [...]]]"
echo " $NAME <-d|--dirs> <dir1> <dir2>"
echo
+ echo " -d, --dirs Compare two backup directories (not jobs)."
+ echo " -q, --quiet Quite mode, only list jobs with changes or errors."
+ echo " -v, --verbose Verbose mode, show all checks that are run."
+ echo
+ echo "When no <job> is given, all defined jobs are checked."
+ echo
exit 2
}
local exclude
- exclude='total '
+ exclude=' \.$'
if [[ "$dir_name" == "/" ]]; then
exclude="$exclude"'| \.stamp$| dev$| etc$| proc$| root$| run$| sys$| tmp$'
exclude="$exclude"'| data$| net$| srv$'
fi
# shellcheck disable=SC2012
- ls -Al "$base_dir$dir_name" 2>/dev/null \
- | egrep -v "($exclude)" | awk '!($2="")' | column -t
+ find "$base_dir$dir_name". -maxdepth 1 -printf '%M %10u:%-10g %t %12s %f\n' 2>/dev/null \
+ | LC_ALL=C sort -k 9 | grep -Ev "($exclude)"
}
HandleSystem() {
/etc/aliases \
/etc/bash.bashrc \
/etc/crontab \
+ /etc/debian_version \
/etc/environment \
/etc/fstab \
/etc/hostname \
/etc/cron.hourly/ \
/etc/cron.monthly/ \
/etc/cron.weekly/ \
+ /etc/init.d/ \
/etc/sudoers.d/ \
+ /etc/systemd/network/ \
+ /etc/systemd/system/ \
+ /etc/systemd/user/ \
/var/log/dumps/ \
; do
[[ ! -d "${gen1_d}${dir}" ]] && continue