#!/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