should work with any posix shell (not just bash)
authorMatthias Förste <foerste@schlittermann.de>
Fri, 04 May 2012 12:12:06 +0200
changeset 6 12744a06a554
parent 5 fdaedf474996
child 7 bd12aa54868e
should work with any posix shell (not just bash)
Makefile
snapfsck.bash
snapfsck.sh
--- a/Makefile	Fri May 04 12:08:34 2012 +0200
+++ b/Makefile	Fri May 04 12:12:06 2012 +0200
@@ -12,6 +12,6 @@
 clean:
 	-rm -f $(objects)
 
-%:	%.bash
+%:	%.sh
 	cp -f $< $@
 	chmod +x-w $@
--- a/snapfsck.bash	Fri May 04 12:08:34 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-#!/bin/bash
-
-SNAPSIZE='500M'
-
-warn() {
-    echo $@ >&2
-}
-
-die() {
-    if [ $# -ne 0 ]; then
-	echo $@ >&2
-    else
-	echo something went wrong
-    fi
-    exit -1
-}
-
-usage() {
-
-cat <<__U
-usage:
- $0 [-s snapsize] /dev/<vgname>/<lvname>
- or
- $0 [-s snapsize] <vgname>/<lvname>
- but not (yet?)
- $0 [-s snapsize] /dev/mapper/<vgname>-<lvname>
-__U
-
-exit -1
-
-}
-
-while getopts "s:" opt; do
-  case $opt in
-    s)
-      SNAPSIZE="$OPTARG"
-      ;;
-    \?)
-      usage
-      ;;
-  esac
-done
-shift $((OPTIND-1))
-
-p=${1:?device required}
-p=${p#/dev/}
-vg=${p%/*}
-lv=${p##*/}
-lvs="snap.${lv}"
-
-[ -n "${vg}" -a -n "${lv}" -a "${vg}" != "${p}" -a "${lv}" != "${p}" ] || usage
-
-d=$(date +%Y%m%d%H%M%S)
-lvcreate -n"$lvs" -L"$SNAPSIZE" -s "$vg/$lv" || die
-if e2fsck -fp "/dev/$vg/$lvs"; then
-    tune2fs -C 1 -T "$d" "/dev/$vg/$lv" || die
-    waittime=1 # second
-    tries=60
-    i=1
-    # if you have problems removing volumes then you may have the 'udisks'
-    # package installed; see:
-    # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=549691#74
-    # https://bugzilla.redhat.com/show_bug.cgi?id=577798#c5
-    # https://www.redhat.com/archives/linux-lvm/2010-August/msg00029.html
-    lvremove -f "$vg/$lvs" || die
-else
-    die fsck returned nonzero: this may indicate filesystem corruption on the origin volume. The snapshot has not been removed.
-fi
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/snapfsck.sh	Fri May 04 12:12:06 2012 +0200
@@ -0,0 +1,68 @@
+#!/bin/sh
+
+SNAPSIZE='500M'
+
+warn() {
+    echo $@ >&2
+}
+
+die() {
+    if [ $# -ne 0 ]; then
+	echo $@ >&2
+    else
+	echo something went wrong
+    fi
+    exit -1
+}
+
+usage() {
+
+cat <<__U
+usage:
+ $0 [-s snapsize] /dev/<vgname>/<lvname>
+ or
+ $0 [-s snapsize] <vgname>/<lvname>
+ but not (yet?)
+ $0 [-s snapsize] /dev/mapper/<vgname>-<lvname>
+__U
+
+exit -1
+
+}
+
+while getopts "s:" opt; do
+  case $opt in
+    s)
+      SNAPSIZE="$OPTARG"
+      ;;
+    \?)
+      usage
+      ;;
+  esac
+done
+shift $((OPTIND-1))
+
+p=${1:?device required}
+p=${p#/dev/}
+vg=${p%/*}
+lv=${p##*/}
+lvs="snap.${lv}"
+
+[ -n "${vg}" -a -n "${lv}" -a "${vg}" != "${p}" -a "${lv}" != "${p}" ] || usage
+
+d=$(date +%Y%m%d%H%M%S)
+lvcreate -n"$lvs" -L"$SNAPSIZE" -s "$vg/$lv" || die
+if e2fsck -fp "/dev/$vg/$lvs"; then
+    tune2fs -C 1 -T "$d" "/dev/$vg/$lv" || die
+    waittime=1 # second
+    tries=60
+    i=1
+    # if you have problems removing volumes then you may have the 'udisks'
+    # package installed; see:
+    # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=549691#74
+    # https://bugzilla.redhat.com/show_bug.cgi?id=577798#c5
+    # https://www.redhat.com/archives/linux-lvm/2010-August/msg00029.html
+    lvremove -f "$vg/$lvs" || die
+else
+    die fsck returned nonzero: this may indicate filesystem corruption on the origin volume. The snapshot has not been removed.
+fi