Add a periodic script to backup output generated from gmirror list.
Disabled by default. PR: 86388 Submitted by: Miroslav Lachman <000.fbsd@quip.cz> Reviewed by: allanjude, gbe Approved by: allanjude (mentor) MFC after: 4 weeks Event: July 2020 Bugathon Differential Revision: https://reviews.freebsd.org/D25631
This commit is contained in:
@@ -25,7 +25,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd November 6, 2020
|
||||
.Dd November 7, 2020
|
||||
.Dt PERIODIC.CONF 5
|
||||
.Os
|
||||
.Sh NAME
|
||||
@@ -257,6 +257,20 @@ as configured in
|
||||
Set to
|
||||
.Dq Li YES
|
||||
to create backup of EFI System Partition (ESP).
|
||||
.It Va daily_backup_gmirror_enable
|
||||
.Pq Vt bool
|
||||
Set to
|
||||
.Dq Li YES
|
||||
to create backup of gmirror information (i.e., output of
|
||||
.Nm gmirror Cm list ) ,
|
||||
see
|
||||
.Xr gmirror 8 .
|
||||
.It Va daily_backup_gmirror_verbose
|
||||
.Pq Vt bool
|
||||
Set to
|
||||
.Dq Li YES
|
||||
to report a diff between the new backup and the existing backup
|
||||
in the daily output.
|
||||
.It Va daily_backup_gpart_enable
|
||||
.Pq Vt bool
|
||||
Set to
|
||||
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
#!/bin/sh
|
||||
|
||||
# $FreeBSD$
|
||||
# Created by: Miroslav Lachman <000.fbsd@quip.cz>
|
||||
|
||||
# Backup output from `gmirror list`, which provides detailed information
|
||||
# of all gmirrors. The backup will be stored in /var/backups/.
|
||||
|
||||
# If there is a global system configuration file, suck it in.
|
||||
#
|
||||
if [ -r /etc/defaults/periodic.conf ]
|
||||
then
|
||||
. /etc/defaults/periodic.conf
|
||||
source_periodic_confs
|
||||
fi
|
||||
|
||||
bak_dir=/var/backups
|
||||
|
||||
rotate() {
|
||||
base_name=$1
|
||||
show_diff=$2
|
||||
file="$bak_dir/$base_name"
|
||||
|
||||
if [ -f "${file}.bak" ]; then
|
||||
rc=0
|
||||
if cmp -s "${file}.bak" "${file}.tmp"; then
|
||||
rm "${file}.tmp"
|
||||
else
|
||||
rc=1
|
||||
[ -n "$show_diff" ] && diff "${file}.bak" "${file}.tmp"
|
||||
mv "${file}.bak" "${file}.bak2" || rc=3
|
||||
mv "${file}.tmp" "${file}.bak" || rc=3
|
||||
fi
|
||||
else
|
||||
rc=1
|
||||
mv "${file}.tmp" "${file}.bak" || rc=3
|
||||
[ -n "$show_diff" ] && cat "${file}.bak"
|
||||
fi
|
||||
}
|
||||
|
||||
case "$daily_backup_gmirror_verbose" in
|
||||
[Yy][Ee][Ss]) show="YES"
|
||||
esac
|
||||
|
||||
case "$daily_backup_gmirror_enable" in
|
||||
[Yy][Ee][Ss])
|
||||
|
||||
gmirrors=$(gmirror status 2> /dev/null | \
|
||||
awk '$1 ~ /^mirror\// { sub(/mirror\//, ""); print $1 }')
|
||||
|
||||
if [ -z "$gmirrors" ]; then
|
||||
echo ""
|
||||
echo "daily_backup_gmirror_enable is set to YES but no gmirrors found."
|
||||
rc=2
|
||||
else
|
||||
echo ""
|
||||
echo "Backup of gmirror information for:";
|
||||
|
||||
for m in ${gmirrors}; do
|
||||
echo "$m"
|
||||
safe_name=$(echo "gmirror.${m}" | tr -cs ".[:alnum:]\n" "_")
|
||||
if ! gmirror status -s "${m}" | grep -F -v "COMPLETE"; then
|
||||
gmirror list "${m}" > "$bak_dir/$safe_name.tmp"
|
||||
rotate "$safe_name" $show
|
||||
fi
|
||||
done
|
||||
fi
|
||||
;;
|
||||
*) rc=0;;
|
||||
esac
|
||||
|
||||
exit $rc
|
||||
@@ -11,6 +11,7 @@ CONFS= 100.clean-disks \
|
||||
200.backup-passwd \
|
||||
210.backup-aliases \
|
||||
221.backup-gpart \
|
||||
222.backup-gmirror \
|
||||
330.news \
|
||||
400.status-disks \
|
||||
401.status-graid \
|
||||
|
||||
@@ -79,9 +79,13 @@ daily_backup_aliases_enable="YES" # Backup mail aliases
|
||||
|
||||
# 221.backup-gpart
|
||||
daily_backup_gpart_enable="YES" # Backup partition table/boot partition/MBR
|
||||
daily_backup_gpart_verbose="NO" # Be verbose if new backup differs from the new one
|
||||
daily_backup_gpart_verbose="NO" # Be verbose if new backup differs from the old one
|
||||
daily_backup_efi_enable="NO" # Backup EFI system partition (ESP)
|
||||
|
||||
# 222.backup-gmirror
|
||||
daily_backup_gmirror_enable="NO" # Backup of gmirror info (i.e., output of `gmirror list`)
|
||||
daily_backup_gmirror_verbose="NO" # Log diff if new backup differs from the old one
|
||||
|
||||
# 223.backup-zfs
|
||||
daily_backup_zfs_enable="NO" # Backup output from zpool/zfs list
|
||||
daily_backup_zfs_props_enable="NO" # Backup zpool/zfs filesystem properties
|
||||
|
||||
Reference in New Issue
Block a user