79 lines
2.2 KiB
Bash
Raw Normal View History

#!/bin/bash
# CONFIG
ZFS_BASE="/mnt/zfs_minio"
BUCKETS=(
"assets-azuracastassets"
"assets-genesisassets"
"assets-genesislibrary"
"assets-genesisarchives"
"assets-mastodon"
)
SAMPLE_COUNT=5
USER="minio-user"
GROUP="minio-user"
# COLORS
GREEN="\033[0;32m"
RED="\033[0;31m"
YELLOW="\033[1;33m"
NC="\033[0m"
echo "🔍 Validating migrated MinIO buckets..."
echo
for bucket in "${BUCKETS[@]}"; do
OLD_PATH="${ZFS_BASE}/${bucket}"
NEW_BUCKET=$(echo "$bucket" | tr '_' '-')
NEW_PATH="${ZFS_BASE}/${NEW_BUCKET}"
echo -e "${YELLOW}=== Bucket: $bucket$NEW_BUCKET ===${NC}"
if [[ ! -d "$OLD_PATH" || ! -d "$NEW_PATH" ]]; then
echo -e "${RED}❌ Missing directory: ${OLD_PATH} or ${NEW_PATH}${NC}"
echo
continue
fi
# 1. File count check
old_count=$(find "$OLD_PATH" -type f | wc -l)
new_count=$(find "$NEW_PATH" -type f | wc -l)
echo "📦 File count: $old_count (old) vs $new_count (new)"
[[ "$old_count" -eq "$new_count" ]] && \
echo -e "${GREEN}✅ File count matches${NC}" || \
echo -e "${RED}❌ File count mismatch${NC}"
# 2. Sample checksum
echo "🔐 Verifying checksums for $SAMPLE_COUNT random files..."
mismatch=0
samples=$(find "$OLD_PATH" -type f | shuf -n "$SAMPLE_COUNT" 2>/dev/null)
for file in $samples; do
rel_path="${file#$OLD_PATH/}"
old_sum=$(sha256sum "$OLD_PATH/$rel_path" | awk '{print $1}')
new_sum=$(sha256sum "$NEW_PATH/$rel_path" | awk '{print $1}')
if [[ "$old_sum" != "$new_sum" ]]; then
echo -e "${RED}❌ Mismatch: $rel_path${NC}"
((mismatch++))
else
echo -e "${GREEN}✔ Match: $rel_path${NC}"
fi
done
[[ "$mismatch" -eq 0 ]] && \
echo -e "${GREEN}✅ All sample checksums match${NC}" || \
echo -e "${RED}$mismatch checksum mismatch(es) found${NC}"
# 3. Ownership check
ownership_issues=$(find "$NEW_PATH" ! -user "$USER" -o ! -group "$GROUP" | wc -l)
[[ "$ownership_issues" -eq 0 ]] && \
echo -e "${GREEN}✅ Ownership is correct${NC}" || \
echo -e "${RED}$ownership_issues ownership issues in $NEW_PATH${NC}"
echo
done
echo -e "${YELLOW}📊 Validation complete. Review any ❌ issues before going live with MinIO.${NC}"