71 lines
1.9 KiB
SYSTEMD
71 lines
1.9 KiB
SYSTEMD
|
#!/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}
|