aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTharre <tharre3@gmail.com>2022-01-07 21:35:28 +0100
committerTharre <tharre3@gmail.com>2023-04-25 05:33:37 +0200
commit051d76ba0e5408cae656d30079816952536cee9b (patch)
tree680799952307854a89aec5bc4d0e5c2daaf2d221
parent59744df0d95e0a51572bfafee03de5979d810f6c (diff)
downloadpkgbuilds-051d76ba0e5408cae656d30079816952536cee9b.tar.gz
pkgbuilds-051d76ba0e5408cae656d30079816952536cee9b.tar.xz
pkgbuilds-051d76ba0e5408cae656d30079816952536cee9b.zip
arch-system: backup system updates
-rw-r--r--arch-system/.SRCINFO8
-rw-r--r--arch-system/PKGBUILD6
-rwxr-xr-xarch-system/backup-sudo11
-rw-r--r--arch-system/borg-backup.service1
-rwxr-xr-xarch-system/borgbackup37
5 files changed, 30 insertions, 33 deletions
diff --git a/arch-system/.SRCINFO b/arch-system/.SRCINFO
index 492a92f..706057b 100644
--- a/arch-system/.SRCINFO
+++ b/arch-system/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = arch-system
pkgdesc = Arch Linux system configuration
- pkgver = 2021.12.18
+ pkgver = 2022.05.25
pkgrel = 1
arch = any
license = custom
@@ -32,10 +32,10 @@ pkgbase = arch-system
sha256sums = 7467bb40e7d404ed249b34a0e410b8d452ebc4b90588d7e210bfa47011b5981d
sha256sums = dd84877b7f6f4330da489fa33f843c9a7c862562a3d78dc2feea5116ac846a79
sha256sums = 483a7d9350653c2cf22f36f67f1a83cc5c95232dfc10642a20d76e3c32c9e2e3
- sha256sums = 0fd2628f2311fbbc4dae6f3018b27976ff20f8d70175bc3a587696350295028c
- sha256sums = 42050ba722df1cd606288e82054e131dac99bf10506f4c8d52eb9bfc0a078d89
+ sha256sums = d39732bec90036020ad94d52cb34b6215801a82595f7fb30f8c5e0a7f1eb9b1e
+ sha256sums = 94c06cbf7304996b0503cace9394c2dbc0150bc045fd30cc402e3d943a8c8abd
sha256sums = e1bf3dc5978a7641f86975b7ee770a6914b30a8e4b7e3be2f1b07eaa7098591d
- sha256sums = 35e501f1114f635a4c55ccf2c9debcdff5579666dcf6d11e695be861ebd0a436
+ sha256sums = 276a79a04359ffae6ddf597d060278f6f58890ce2d5f6c185948b31c7a5c8927
sha256sums = 895305808aa91be3294dbaeb7840e38497fb8dbcd6309cc95c417e1a0379e596
sha256sums = 5613c98d32e513a973e8a0e250ab0b267882a73615f507b6208d4a5f21487fe6
diff --git a/arch-system/PKGBUILD b/arch-system/PKGBUILD
index 44faee5..bba13bf 100644
--- a/arch-system/PKGBUILD
+++ b/arch-system/PKGBUILD
@@ -27,10 +27,10 @@ sha256sums=('271d6a7ac30da0d2ba055067d4ebbab76812c1735e4c2b45c619e004edc1fbba'
'7467bb40e7d404ed249b34a0e410b8d452ebc4b90588d7e210bfa47011b5981d'
'dd84877b7f6f4330da489fa33f843c9a7c862562a3d78dc2feea5116ac846a79'
'483a7d9350653c2cf22f36f67f1a83cc5c95232dfc10642a20d76e3c32c9e2e3'
- '0fd2628f2311fbbc4dae6f3018b27976ff20f8d70175bc3a587696350295028c'
- '42050ba722df1cd606288e82054e131dac99bf10506f4c8d52eb9bfc0a078d89'
+ 'd39732bec90036020ad94d52cb34b6215801a82595f7fb30f8c5e0a7f1eb9b1e'
+ '94c06cbf7304996b0503cace9394c2dbc0150bc045fd30cc402e3d943a8c8abd'
'e1bf3dc5978a7641f86975b7ee770a6914b30a8e4b7e3be2f1b07eaa7098591d'
- '35e501f1114f635a4c55ccf2c9debcdff5579666dcf6d11e695be861ebd0a436'
+ '276a79a04359ffae6ddf597d060278f6f58890ce2d5f6c185948b31c7a5c8927'
'895305808aa91be3294dbaeb7840e38497fb8dbcd6309cc95c417e1a0379e596'
'5613c98d32e513a973e8a0e250ab0b267882a73615f507b6208d4a5f21487fe6')
diff --git a/arch-system/backup-sudo b/arch-system/backup-sudo
index 1091451..90590e0 100755
--- a/arch-system/backup-sudo
+++ b/arch-system/backup-sudo
@@ -12,8 +12,13 @@ validate_path() {
case "$1" in
snapshot)
validate_path "$2"
- touch /home
- btrfs subvolume snapshot -r -- /home "$2"
+ # small race, but shouldn't matter
+ if ! btrfs subvolume show "$3" > /dev/null 2>&1; then
+ echo "Not a btrfs subvolume." >&2
+ exit 3
+ fi
+ touch -c -- "$3"
+ btrfs subvolume snapshot -r -- "$3" "$2"
;;
delete_snapshot)
validate_path "$2"
@@ -26,7 +31,7 @@ case "$1" in
;;
cleanup)
umount /backup 2> /dev/null || true
- rm -rf /backup
+ rm -df /backup
;;
*)
echo "No command specified." >&2
diff --git a/arch-system/borg-backup.service b/arch-system/borg-backup.service
index 689ac75..b5a4a52 100644
--- a/arch-system/borg-backup.service
+++ b/arch-system/borg-backup.service
@@ -4,6 +4,7 @@ Wants=network-online.target
After=network-online.target
[Service]
+RuntimeMaxSec=1800
Nice=19
IOSchedulingClass=3
IOSchedulingPriority=7
diff --git a/arch-system/borgbackup b/arch-system/borgbackup
index e16eec3..c813fcc 100755
--- a/arch-system/borgbackup
+++ b/arch-system/borgbackup
@@ -2,39 +2,28 @@
set -o errexit -o errtrace
-BORG_HOST="12390@ch-s012.rsync.net"
-export BORG_REPO="$BORG_HOST:repos/$(hostname)"
-export BORG_PASSPHRASE="$(< ~/.borg_secret)"
-export BORG_RSH="ssh -o IdentitiesOnly=yes -o ConnectionAttempts=20 \
- -o ServerAliveInterval=30 -i ~/.ssh/borg_key"
+source /etc/borg_env.sh
+
+export BORG_RSH="$BORG_RSH -o ConnectionAttempts=20 -o ServerAliveInterval=30"
export LC_COLLATE=C
-SNAPSHOT_TARGET="/.snapshots/home-$(date "+%Y-%m-%dT%H:%M:%S")"
+SNAPSHOT_TARGET="/.snapshots/$SNAPSHOT_PREFIX-$(date "+%Y-%m-%dT%H:%M:%S")"
cleanup() {
cd /
sudo -n /usr/bin/backup-sudo cleanup
}
-notify_user() {
- if ! [ -t 1 ]; then
- notify-send "$@"
- fi
-}
-
handle_failure() {
notify_user -u critical "Backup failed!"
echo "Backup failed!" >&2
- cleanup
exit 2
}
trap cleanup EXIT
trap handle_failure INT TERM ERR
-cleanup
-
backup() {
# borg's caching of 'known' files is really dumb - it takes the full
# canonical path to check if it has already seen a file. This means that the
@@ -47,16 +36,18 @@ backup() {
fi
cd /backup
+
+ BACKUP_TARGET="$SNAPSHOT_PREFIX"-"$(date -r . "+%Y-%m-%dT%H:%M:%S")"
borg create --stats $borg_progress \
- --exclude-from ~/.borg_exclude \
+ --patterns-from ~/.borg_pattern \
--timestamp . \
--show-rc \
- ::"$(basename "$1")" . && rc=$? || rc=$?
+ ::"$BACKUP_TARGET" . && rc=$? || rc=$?
if [ $rc -eq 1 ]; then
# borg defines return code 1 as warning, usually permission stuff
notify_user "Warning: borgbackup returned 1. Check logs"
elif [ $rc -gt 1 ]; then
- borg list | grep -q "$(basename "$1")" || handle_failure
+ borg list --short | grep -q "$BACKUP_TARGET" || false
fi
cleanup
@@ -64,21 +55,20 @@ backup() {
}
if [ ! -d "$SNAPSHOT_TARGET" ]; then
- sudo -n backup-sudo snapshot "$SNAPSHOT_TARGET"
+ sudo -n backup-sudo snapshot "$SNAPSHOT_TARGET" "$SNAPSHOT_MOUNTPOINT"
fi
+cleanup
+
$BORG_RSH "$BORG_HOST" -f -N || rc=$?
if [ ${rc-0} -eq 255 ]; then
notify_user "Backup: upload skipped"
echo "SSH server not reachable, skipping upload" >&2
exit 0
elif [ ${rc-0} -ne 0 ]; then
- handle_failure
+ false
fi
-# break locks in case the previous run was interrupted
-borg break-lock
-
for d in /.snapshots/*/ ; do
echo "Now working on: $d"
backup "$d"
@@ -87,6 +77,7 @@ done
echo "Pruning repository."
borg prune --show-rc --list \
+ --keep-last 20 \
--keep-hourly 72 \
--keep-daily 7 \
--keep-weekly 4 \