summaryrefslogtreecommitdiff
path: root/sha256.sh
diff options
context:
space:
mode:
authordoc <doc@filenotfound.org>2025-09-14 22:13:41 +0000
committerdoc <doc@filenotfound.org>2025-09-14 22:13:41 +0000
commit13eb2d51c7284472efabc278bf9b7ec0b8575e47 (patch)
tree9f0ea15fdc908a2afe4d315beb112fe9545db02e /sha256.sh
first commitHEADmaster
Diffstat (limited to 'sha256.sh')
-rwxr-xr-xsha256.sh29
1 files changed, 29 insertions, 0 deletions
diff --git a/sha256.sh b/sha256.sh
new file mode 100755
index 0000000..296c8b6
--- /dev/null
+++ b/sha256.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# /usr/local/bin/mirror-checksum.sh
+# Sync mirrors and generate SHA256 checksums
+
+# Set umask so checksums aren't world-writable
+umask 022
+
+# Define an array of mirrors: "name|rsync_source|local_dir|logfile"
+MIRRORS=(
+ "archlinux|rsync://arch.mirror.constant.com/archlinux/|/brimstone2/mirror/archlinux|/var/log/arch-mirror-sync.log"
+ "gentoo|rsync://masterdistfiles.gentoo.org/gentoo/|/brimstone2/mirror/gentoo|/var/log/gentoo-mirror-sync.log"
+ "hardenedbsd|rsync://rsync.hardenedbsd.org/all/|/mnt/brimstone/mirror/hardenedbsd|/var/log/hbsd-sync.log"
+ "void|rsync://repo-sync.voidlinux.org/voidlinux/|/mnt/brimstone/mirror/void|/var/log/void-sync.log"
+ "slackware|rsync://mirrors.kernel.org/slackware/|/mnt/brimstone/mirror/slackware|/var/log/slackware-sync.log"
+)
+
+for entry in "${MIRRORS[@]}"; do
+ IFS="|" read -r NAME SOURCE DEST LOG <<< "$entry"
+
+ echo "[$(date)] Syncing $NAME mirror..." | tee -a "$LOG"
+ rsync -avhr --delete "$SOURCE" "$DEST" >> "$LOG" 2>&1
+
+ echo "[$(date)] Generating SHA256 checksums for $NAME..." | tee -a "$LOG"
+ (cd "$DEST" && \
+ find . -type f -print0 | sort -z | \
+ xargs -0 sha256sum > "$DEST/SHA256SUMS" )
+
+ echo "[$(date)] SHA256 complete for $NAME. Results stored at $DEST/SHA256SUMS" | tee -a "$LOG"
+done