3 # insert bootable partition table at beginning of lv
5 test -z "$1" || test ! -e "$1" && echo "Usage: $0 /path/to/lv" && exit 1
7 lvs --noheadings -o vg_name,name,lv_size $1 | tee /dev/stderr | while read vg_name name lv_size ; do
8 lvcreate -s -L $lv_size -n ${name}.snap /dev/$vg_name/$name
10 # wipe beginning so that grub-install doesn't complain
11 dd if=/dev/zero of=/dev/$vg_name/$name bs=1 count=2048
14 echo '2048,+,L,*' | sfdisk --no-reread /dev/$vg_name/$name
17 mkfs.ext4 -F -E offset=$(( 2048 * 512 )) /dev/$vg_name/$name
20 mount /dev/$vg_name/$name /tmp/$name -o offset=$(( 2048 * 512 ))
23 mkdir /tmp/${name}.snap
24 mount /dev/$vg_name/${name}.snap /tmp/${name}.snap
26 rsync -raHX --numeric-ids --sparse /tmp/${name}.snap/ /tmp/$name/
28 umount /tmp/${name}.snap
31 rmdir /tmp/${name}.snap
34 lvremove -y /dev/$vg_name/${name}.snap