aboutsummaryrefslogtreecommitdiff
path: root/scripts/snap-lvm.sh
diff options
context:
space:
mode:
authorMitchell Riedstra <mitch@riedstra.dev>2021-10-29 21:53:53 -0400
committerMitchell Riedstra <mitch@riedstra.dev>2021-10-29 21:53:53 -0400
commit5b25c5155312f626813e0d36b7933f5eba801dd2 (patch)
tree6e264a92dbe13ed77821a5c5bd536b6701768442 /scripts/snap-lvm.sh
parente9b933ea6ce85f5d4f4653b7e5e6a7c836fcc893 (diff)
downloaddotfiles-5b25c5155312f626813e0d36b7933f5eba801dd2.tar.gz
dotfiles-5b25c5155312f626813e0d36b7933f5eba801dd2.tar.xz
Major dotfile cleanup
Diffstat (limited to 'scripts/snap-lvm.sh')
-rwxr-xr-xscripts/snap-lvm.sh31
1 files changed, 31 insertions, 0 deletions
diff --git a/scripts/snap-lvm.sh b/scripts/snap-lvm.sh
new file mode 100755
index 0000000..4991495
--- /dev/null
+++ b/scripts/snap-lvm.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