aboutsummaryrefslogtreecommitdiff
path: root/lvm-snapshot.sh
diff options
context:
space:
mode:
authorMitch Riedstra <mitch@riedstra.us>2019-03-17 23:47:27 -0400
committerMitch Riedstra <mitch@riedstra.us>2019-03-17 23:47:27 -0400
commit0622e7892223ec3b1438bd50c7863f37aad3d10a (patch)
tree23eb98dd579b78d8fdf3e925a8eb71c98a47b176 /lvm-snapshot.sh
parentfa6940329295979ef41f616680b6dede583ddb05 (diff)
parentd40c833ea8d95808c09e6463725dfe678f195185 (diff)
downloaddotfiles-0622e7892223ec3b1438bd50c7863f37aad3d10a.tar.gz
dotfiles-0622e7892223ec3b1438bd50c7863f37aad3d10a.tar.xz
Merge branch 'master' of rygel.us:~/mitch/dotfiles
Diffstat (limited to 'lvm-snapshot.sh')
-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