summaryrefslogtreecommitdiffstats
path: root/backup.sh
diff options
context:
space:
mode:
Diffstat (limited to 'backup.sh')
-rwxr-xr-xbackup.sh37
1 files changed, 23 insertions, 14 deletions
diff --git a/backup.sh b/backup.sh
index dd30db3..f1a90e8 100755
--- a/backup.sh
+++ b/backup.sh
@@ -28,7 +28,7 @@
#
# See gpl-3.0.txt for full license text.
-set -e
+set -eu
main() {
if [[ $UID != 0 ]]; then
@@ -95,15 +95,19 @@ main() {
# This is called before creating the backup
pre_backup() {
- # save some data that's useful for restores
- local backupDataDir=/root/backup-data/
- mkdir -p "$backupDataDir"
- fdisk -l > "$backupDataDir/fdisk"
- vgdisplay > "$backupDataDir/vgdisplay"
- pvdisplay > "$backupDataDir/pvdisplay"
- lvdisplay > "$backupDataDir/lvdisplay"
- df -a > "$backupDataDir/df"
- findmnt -l > "$backupDataDir/findmnt"
+ if in_array_startswith '/root/backup-data/' "${source_paths[@]}"; then
+ # save some data that's useful for restores
+ local backupDataDir=/root/backup-data/
+ mkdir -p "$backupDataDir"
+ fdisk -l > "$backupDataDir/fdisk"
+ vgdisplay > "$backupDataDir/vgdisplay"
+ pvdisplay > "$backupDataDir/pvdisplay"
+ lvdisplay > "$backupDataDir/lvdisplay"
+ df -a > "$backupDataDir/df"
+ findmnt -l > "$backupDataDir/findmnt"
+ mdadm --detail --scan > "$backupDataDir/mdadm"
+ vgcfgbackup --file "$backupDataDir/vgcfgbackup"
+ fi
# If you wish to use snapshots, create them here
@@ -123,18 +127,23 @@ backup_borg() {
local src=("$@")
local -a options=(
--verbose
- --numeric-owner
+ --numeric-ids
--compression lz4
--exclude-from "$TMPDIR/exclude-list-borg"
)
if tty -s; then
- options+=(--progress --stats)
+ options+=(--progress --stats --list --filter AME)
fi
borg create "${options[@]}" "$dst::$backup_prefix-$(date "+%Y%m%d-%H%M%S")" "${src[@]}"
- borg prune --prefix "backup-" --keep-within 7d --keep-daily 7 --keep-weekly 12 --keep-monthly 6 --keep-yearly 0 -v "$dst"
- borg prune --prefix "partial-" --keep-within 7d --keep-daily 7 --keep-weekly 12 --keep-monthly 6 --keep-yearly 0 -v "$dst"
+
+ # Only purge when doing full backups. Increases partial backup speed and
+ # ensure that we have at least one recent full backup when we purge.
+ if [[ $backup_prefix == 'backup' ]]; then
+ borg prune --prefix "backup-" --keep-within 7d --keep-daily 7 --keep-weekly 12 --keep-monthly 6 --keep-yearly 0 -v "$dst"
+ borg prune --prefix "partial-" --keep-within 31d -v "$dst"
+ fi
}
### support functions below ###