Files
pxe_boot_alma/scripts/sync_alma_tree.sh
T

77 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
ISO_PATH=""
HTTP_ROOT=""
MOUNT_DIR=""
usage() {
cat <<'EOF'
Usage: sync_alma_tree.sh --iso FILE --http-root DIR [--mount-dir DIR]
Mount an AlmaLinux ISO read-only and copy its contents into an HTTP-served
install tree for PXE/Kickstart use.
EOF
}
while [[ $# -gt 0 ]]; do
case "$1" in
--iso)
ISO_PATH="$2"
shift 2
;;
--http-root)
HTTP_ROOT="$2"
shift 2
;;
--mount-dir)
MOUNT_DIR="$2"
shift 2
;;
-h|--help)
usage
exit 0
;;
*)
echo "Unknown option: $1" >&2
usage >&2
exit 1
;;
esac
done
if [[ -z "$ISO_PATH" || -z "$HTTP_ROOT" ]]; then
usage >&2
exit 1
fi
if [[ ! -f "$ISO_PATH" ]]; then
echo "ISO not found: $ISO_PATH" >&2
exit 1
fi
if [[ $EUID -ne 0 ]]; then
echo "Re-running with sudo..."
exec sudo "$0" "$@"
fi
if [[ -z "$MOUNT_DIR" ]]; then
MOUNT_DIR="$(mktemp -d /tmp/alma-iso.XXXXXX)"
fi
cleanup() {
if mountpoint -q "$MOUNT_DIR"; then
umount "$MOUNT_DIR"
fi
rmdir "$MOUNT_DIR" 2>/dev/null || true
}
trap cleanup EXIT
mkdir -p "$HTTP_ROOT"
mount -o loop,ro "$ISO_PATH" "$MOUNT_DIR"
rsync -aH --delete "$MOUNT_DIR"/ "$HTTP_ROOT"/
echo "Synced AlmaLinux tree to $HTTP_ROOT"