config

OpenBSD system configuration
git clone git://jacobedwards.org/config
Log | Files | Refs | README

commit bf1a2451f5afe3edf57dd7f492b3de4e67105b44
parent 40fba286c95099b8e7b8525b33b9bf1b8d9e290e
Author: Jacob R. Edwards <jacob@jacobedwards.org>
Date:   Fri,  5 May 2023 14:36:20 -0700

Add backupserver script

This script makes use of the srvbackup script[1] installed on the
server to provide a series of 8 unique backups of the server. This
8 is an arbitrary number and may be changed by editing the script.

[1] See my srvbackup project

Diffstat:
Alocal/bin/bin/backupserver | 39+++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+), 0 deletions(-)

diff --git a/local/bin/bin/backupserver b/local/bin/bin/backupserver @@ -0,0 +1,39 @@ +#!/bin/sh +# Copyright 2023 Jacob R. Edwards +# Keep a set of backups of a server (which has srvbackup installed) +# +# This works like newsyslog(8), shifting each backup until a certain +# point where it's overwritten by the next in line. An example of +# the cycle: +# server.1.tar -> server.2.tar +# server.0.tar -> server.1.tar +# server.tar -> server.0.tar + +backups="$HOME"/sys/var/backups +login="$1" +server="${login##*@}" +backup="$server".tar +tmp="$(mktemp "$backups"/tmp-XXXXXX)" + +trap 'rm -f "$tmp"' 0 TERM INT + +if test -f "$backup" +then + sha=$(sha256 < "$backup") +fi + +ssh -C "$login" /usr/local/bin/srvbackup get $sha > "$tmp" || + exit 1 +! test -s "$t" && + exit 0 + +for num in 6 5 4 3 2 1 0 +do + test -f "$server".$num.tar-$i && + mv -f "$server".$num.tar "$server".$(expr $num + 1).tar +done + +test -f "$backup" && + mv -f "$backup" "$backup".0.tar +mv "$tmp" "$backup" +trap '' 0 TERM INT