# live-snapshot - utility to manage Debian Live systems snapshots
#
-# This program mount a device (fallback to /tmpfs under $MOUNTP
-# and save the /live/cow (or a different dir) filesystem in it for reusing
+# This program mounts a device (fallback to /tmpfs under $MOUNTP
+# and saves the /live/cow (or a different dir) filesystem in it for reuse
# in another live-initramfs session. Look at manpage for more info.
#
-# Copyright (C) 2006 Marco Amadori <marco.amadori@gmail.com>
+# Copyright (C) 2006-2008 Marco Amadori <marco.amadori@gmail.com>
# Copyright (C) 2008 Chris Lamb <chris@chris-lamb.co.uk>
#
# This program is free software; you can redistribute it and/or modify
export USERNAME USERFULLNAME HOSTNAME
PROGRAM="$(basename $0)"
-VERSION=0.0.2
# Needs to be available at run and reboot time
SAFE_TMPDIR="/live"
MOUNTP="$(mktemp -d -p ${SAFE_TMPDIR} live-snapshot-mnt.XXXXXX)"
SNAP_COW="/live/cow"
SNAP_DEV=""
+SNAP_OUTPUT=""
DEST="${MOUNTP}/live-sn.cpio.gz"
SNAP_TYPE="cpio"
DESKTOP_LINK="/home/${USERNAME}/Desktop/live-snapshot"
exit 0
}
-
Version ()
{
- echo "${PROGRAM}, version ${VERSION}"
+ echo "${PROGRAM}"
echo
echo "Copyright (C) 2006 Marco Amadori <marco.amadori@gmail.com>"
+ echo "Copyright (C) 2008 Chris Lamb <chris@chris-lamb.co.uk>"
echo
echo "This program is free software; you can redistribute it and/or modify"
echo "it under the terms of the GNU General Public License as published by"
exit 0
}
-Is_same_mount ()
-{
- dir1="$(Base_path ${1})"
- dir2="$(Base_path ${2})"
-
- if [ "${dir1}" = "${dir2}" ]
- then
- return 0
- else
- return 1
- fi
-}
-
Parse_args ()
{
# Parse command line
esac
done
-
}
Defaults ()
then
SNAP_COW=$(echo "${SNAP_RESYNC_STRING}" | cut -f1 -d ':')
SNAP_DEV=$(echo "${SNAP_RESYNC_STRING}" | cut -f2 -d ':')
- DEST=$(echo "${SNAP_RESYNC_STRING}" | cut -f3 -d ':')
+ DEST="${MOUNTP}/$(echo ${SNAP_RESYNC_STRING} | cut -f3 -d ':')"
case "${DEST}" in
*.cpio.gz)
Error "unrecognized resync string"
;;
esac
-
- else
+ elif [ -z "${SNAP_OUTPUT}" ]
+ then
# Set target file based on image
case "${SNAP_TYPE}" in
cpio)
DEST="${MOUNTP}/live-sn.ext2"
;;
esac
+ else
+ DEST="${SNAP_OUTPUT}"
fi
-
}
Validate_input ()
{
- case "${SNAP_TYPE}" in
+ case "${SNAP_TYPE}" in
cpio|squashfs|jffs2|ext2|ext3)
;;
+
*)
Error "invalid filesystem type \"${SNAP_TYPE}\""
;;
Mount_device ()
{
- mkdir -p "${MOUNTP}"
-
case "${SNAP_DEV}" in
"")
# create a temp
mount -t tmpfs -o rw tmpfs "${MOUNTP}"
;;
+
*)
if [ -b "${SNAP_DEV}" ]
then
Parse_args "${@}"
Defaults
Validate_input
- trap 'Clean' EXIT
+ trap 'Clean' EXIT
Mount_device
Do_snapshot
}