#!/bin/sh
#
# Usage: mydisksync <labelroot> [noboot]
#       <labelroot> is tm02, tm03 that we copy to (assume FROM tm01)
#       noboot -- do NOT copy boot sectors for raw entire disk
# 

fromdisk=tm01
disk=$1
doboot=$2

case "$disk" in
    '') 
        disk=tm02
        echo Assuming $disk
    ;;
    tm??)
        echo You selected $disk
    ;;
    *)
        echo OUCH bad disk arg input: $disk
        exit 1
    ;;
esac
case "$doboot" in
    ''|boot|yes)
        doboot=boot
        echo Will copy boot sectors
    ;;
    'noboot')
        echo Will NOT copy boot sectors
    ;;
    *)
        echo OUCH bad boot arg input: $doboot
        exit 1
    ;;
esac

set -ex

## echo press ENTER to continue...
## read junk

# backup_unmounted <label_suffix> [rootdev]
backup_unmounted()
{
    set -e
    suffix="$1"
    from_partition="$fromdisk"-"$suffix"
    to_partition="$disk"-"$suffix"
    echo BACKUP UNmounted $from_partition $to_partition $2
    mount -o ro LABEL=$from_partition /media/backupFrom
    mount LABEL=$to_partition /media/backupDisk
    rsync -avx --delete /media/backupFrom/. /media/backupDisk/.
    case "$2" in 
        rootdev)
            cp -a /dev/console /media/backupDisk/dev/.
            cp -a /dev/null /media/backupDisk/dev/.
        ;;
    esac
    umount /media/backupDisk
    umount /media/backupFrom
}

# backup_mounted <fromdir> <label_suffix> [rootdev]
backup_mounted()
{
    set -e
    fromdir="$1"
    suffix="$2"
    to_partition="$disk"-"$suffix"
    echo BACKUP MOUNTED $fromdir $to_partition $3
    mount LABEL=$to_partition /media/backupDisk
    rsync -avx --delete $fromdir/. /media/backupDisk/.
    case "$3" in 
        rootdev)
            cp -a /dev/console /media/backupDisk/dev/.
            cp -a /dev/null /media/backupDisk/dev/.
        ;;
    esac
    umount /media/backupDisk
}

# partition 1 is ubunto root partition
## backup_unmounted 1 rootdev
backup_mounted / 1 rootdev

# partition 5 was /boot but not using this anymore
## backup_unmounted boot

# partition 6 /home
backup_mounted /home home

# partition 7 /local
backup_mounted /local local

# partition 8 /merrill
backup_mounted /merrill merrill

# partition 9 unused

# partition 10 --OLD-- Debian w/ KDE
## backup_mounted / root rootdev
backup_unmounted root rootdev

# partition 11 swap

# partition 12 was for ubuntu
# backup_unmounted ubuntu rootdev

# partition 13 /tmp  (no backup needed)

# partition 14 /a
backup_mounted /a a

# partition 15 /m
backup_mounted /m m

echo BACKUP OF BOOT SECTORS
disk_device=/dev/`readlink /dev/disk/by-label/$disk-1 | sed -e 's/.*\///' | tr -d '0123456789'`
echo BOOT SECTORS on $disk_device

if [ "$doboot" = boot ]
then
    dd bs=512 count=63 if=/dev/sda of=$disk_device
else
    echo
    echo Skipping backup of boot from $disk_device
    echo
fi

echo DONE OK


