#!/bin/bash # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 BCKDIR="${1:-/backup}" VGNAME="$2" LVNAME="$3" ############################################################################### # Ne pas modifier à partir d'ici function die() { [ -n "$*" ] && echo "$*" exit 1 } mountvg= mount= mountrw= # Vérifier que le volume group est monté if [ -n "$VGNAME" ]; then # Vérifier la présence du volume group found= try=1 while [ "$try" -le 2 ]; do VGNAMES=($(vgs --noheadings -o vg_name | sed 's/ //g')) for vgname in "${VGNAMES[@]}"; do if [ "$vgname" == "$VGNAME" ]; then found=1 break fi done if [ -n "$found" ]; then break else vgscan >&/dev/null try=$(($try + 1)) fi done [ -n "$found" ] || die "ERR volume group $VGNAME not found" # Vérifier qu'il est monté if [ ! -d "/dev/$VGNAME" ]; then vgchange -ay "$VGNAME" >&/dev/null mountvg=1 fi [ -d "/dev/$VGNAME" ] || die "ERR directory /dev/$VGNAME not found" fi # Vérifier que le répertoire est monté if [ ! -d "$BCKDIR" ]; then mkdir "$BCKDIR" >&/dev/null || die "ERR cannot mkdir $BCKDIR" fi if ! mount | grep -q "on $BCKDIR "; then if grep -q "$BCKDIR" /etc/fstab; then mount "$BCKDIR" >&/dev/null || die "ERR cannot mount $BCKDIR" mount=1 elif [ -n "$LVNAME" -a -n "$VGNAME" ]; then mount "/dev/$VGNAME/$LVNAME" "$BCKDIR" mount=1 fi fi # Vérifier que le répertoire est monté en lecture/écriture if ! mount | grep "on $BCKDIR " | grep -q '(.*rw.*)'; then mount -o remount,rw "$BCKDIR" >&/dev/null || die "ERR cannot remount $BCKDIR as R/W" mountrw=1 fi echo OK "$BCKDIR" "$VGNAME" "$LVNAME" ${mountvg:+ mounted_vg}${mount:+ mounted}${mountrw:+ mounted_rw}