diff options
Diffstat (limited to 'sha256.sh')
-rwxr-xr-x | sha256.sh | 29 |
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 |