diff options
Diffstat (limited to 'snap')
| -rw-r--r-- | snap/btrfs.sh | 23 | ||||
| -rw-r--r-- | snap/lvm.sh | 31 |
2 files changed, 54 insertions, 0 deletions
diff --git a/snap/btrfs.sh b/snap/btrfs.sh new file mode 100644 index 0000000..cc2e5a9 --- /dev/null +++ b/snap/btrfs.sh @@ -0,0 +1,23 @@ +#!/bin/sh +set -x +set -e +timestamp() { + date +%m.%d.%y_%H.%M.%S +} + +rootfs="glibc" +snap="${rootfs}-snap" + +cd /ROOT + +if [ -e "$snap" ] ; then + btrfs sub del "$snap" +fi + +if ! [ -e "bak" ] ; then + btrfs sub create "bak" +fi + +btrfs sub snap -r "$rootfs" "bak/${rootfs}-$(timestamp)" +btrfs sub snap "$rootfs" "$snap" +sed -i.bak -e"s/subvol=${rootfs}/subvol=${snap}/g" "${snap}/etc/fstab" diff --git a/snap/lvm.sh b/snap/lvm.sh new file mode 100644 index 0000000..4991495 --- /dev/null +++ b/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 |
