aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitch Riedstra <mitch@riedstra.us>2019-03-13 23:11:04 -0400
committerMitch Riedstra <mitch@riedstra.us>2019-03-13 23:11:04 -0400
commitb91d869ca5282437ad4e2bf87b43efb826e98fff (patch)
tree75d575925f81b4a0dbba6fbc36fc85e14f54c847
parentf8e5010dfe0aa6925646b2f766f97a16cb52a422 (diff)
downloaddotfiles-b91d869ca5282437ad4e2bf87b43efb826e98fff.tar.gz
dotfiles-b91d869ca5282437ad4e2bf87b43efb826e98fff.tar.xz
Add an LVM snapshot script
-rw-r--r--lvm-snapshot.sh31
1 files changed, 31 insertions, 0 deletions
diff --git a/lvm-snapshot.sh b/lvm-snapshot.sh
new file mode 100644
index 0000000..4991495
--- /dev/null
+++ b/lvm-snapshot.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -e
+
+vg="x230"
+lv="root"
+snap_name="${lv}-snap"
+mountpoint="/mnt/snap"
+PERCENT="100"
+
+mount_fs() {
+ _device="$1"; shift
+ _opts="nouuid,rw"
+ _mntpoint="$1"; shift
+ if ! [ -d "$_mntpoint" ] ; then
+ mkdir "$_mntpoint"
+ fi
+ mount -o "$_opts" "$_device" "$_mntpoint"
+}
+
+# If snapshot doesn't exist
+if ! lvm lvs "$vg/$snap_name" >/dev/null 2>&1 ; then
+ lvm lvcreate "$vg/$lv" -s --name "$snap_name" -l "${PERCENT}%ORIGIN"
+ mount_fs "/dev/$vg/$snap_name" "$mountpoint"
+ sed -i.bak -r "s@(/dev/${vg}/${lv})@\1${snap_name}@" \
+ "$mountpoint/etc/fstab"
+ umount "$mountpoint"
+else
+ printf 'Cannot continue snapshot "%s" already exists.\n' \
+ "$vg/$snap_name"
+ exit 1;
+fi