79 lines
2.2 KiB
Bash
79 lines
2.2 KiB
Bash
|
#!/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}"
|