blob: 296c8b6cb275e6e07b431027a51e9cf180e71769 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
|