#
# This program mounts a device (fallback to /tmpfs under $MOUNTP
# and saves the /live/cow (or a different directory) filesystem in it
-# for reuse in another live-initramfs session.
+# for reuse in another live-boot session.
# Look at the manpage for more informations.
#
-# Copyright (C) 2006-2008 Marco Amadori <marco.amadori@gmail.com>
+# Copyright (C) 2006-2011 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
. /usr/share/initramfs-tools/scripts/live-helpers
-LIVE_CONF="/etc/live.conf"
-. "${LIVE_CONF}"
+LIVE_CONF="/etc/live/boot.d/snapshot.conf"
+
+if [ -r "${LIVE_CONF}" ]
+then
+ . "${LIVE_CONF}"
+fi
export USERNAME USERFULLNAME HOSTNAME
{
echo "${PROGRAM}"
echo
- echo "Copyright (C) 2006 Marco Amadori <marco.amadori@gmail.com>"
+ echo "Copyright (C) 2006-2011 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"
- echo "the Free Software Foundation; either version 2 of the License, or"
+ echo "the Free Software Foundation; either version 3 of the License, or"
echo "(at your option) any later version."
echo
echo "This program is distributed in the hope that it will be useful,"
echo "Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA"
echo
echo "On Debian systems, the complete text of the GNU General Public License"
- echo "can be found in /usr/share/common-licenses/GPL-2 file."
+ echo "can be found in /usr/share/common-licenses/GPL-3 file."
echo
echo "Homepage: <http://debian-live.alioth.debian.org/>"
# Parse resync string
if [ -n "${SNAP_RESYNC_STRING}" ]
then
- SNAP_COW=$(echo "${SNAP_RESYNC_STRING}" | cut -f1 -d ':')
+ SNAP_COW=$(echo "${SNAP_RESYNC_STRING}" | sed -r -e 's#^([^:]*).*$#'"${DEF_SNAP_COW}"'\1#')
SNAP_DEV=$(echo "${SNAP_RESYNC_STRING}" | cut -f2 -d ':')
SNAP_MNT=$(echo "${SNAP_RESYNC_STRING}" | cut -f3 -d ':')
DEST="${MOUNTP}/${SNAP_MNT}"
if [ -e "${entry}" ] || [ -L "${entry}" ]
then
- if [ -e "${DEF_SNAP_COW}/${entry}" ] || [ -L "${DEF_SNAP_COW}/${entry}" ]
+ if [ -e "${SNAP_COW}/${entry}" ] || [ -L "${SNAP_COW}/${entry}" ]
then
return 0
fi
Do_filelist ()
{
- # BUGS: supports only cpio.gz types, and does not handle deleted files yet
-
+ # BUGS: does not handle deleted files yet
TMP_FILELIST=$1
+
if [ -f "${SNAP_LIST}" ]
then
+ # if SNAP_COW == /live/cow/home, SNAP_RW = /home
+ SNAP_RW=$(echo "${SNAP_COW}" | sed -e "s|${DEF_SNAP_COW}||g")
+ if [ -z "${SNAP_RW}" ]
+ then
+ SNAP_RW="/"
+ fi
+
+ cd "${SNAP_RW}"
# Generate include list removing empty and commented lines
- for entry in $(sed -e '/^ *$/d' -e '/^#.*$/d' "${SNAP_LIST}")
+ # and transforming paths to relatives
+ for entry in $(sed -e '/^ *$/d' -e '/^#.*$/d' -e 's#^.*$#./&#' -e 's#/\+#/#g' "${SNAP_LIST}")
do
if [ -d "${entry}" ]
then
- cd /
find "${entry}" | while read line
do
if Entry_is_modified "${line}"
printf "%s\000" "${line}" >> "${TMP_FILELIST}"
fi
done
- cd "${OLDPWD}"
elif Entry_is_modified "${entry}"
then
# if file exists and it is modified
printf "%s\000" "${entry}" >> "${TMP_FILELIST}"
fi
done
+ cd "${OLDPWD}"
- if [ "${SNAP_COW}" = "${DEF_SNAP_COW}" ]
- then
- # Relative to rootfs
- echo "/"
- else
- # Mostly "/home"
- echo "${SNAP_COW}"
- fi
+ # echo Working dir
+ echo "${SNAP_RW}"
else
cd "${SNAP_COW}"
+ # removing whiteouts from list
find . -path '*.wh.*' -prune -o -print0 >> "${TMP_FILELIST}"
cd "${OLDPWD}"
+ # echo Working dir
echo "${SNAP_COW}"
fi
}
grep -F -v -f "${EXCLUDE_LIST}" | \
tr '\n' '\0' | \
tr '\1' '\n' | \
- $COPY_CMD || exit 1
+ eval $COPY_CMD || exit 1
else
cat "${TMP_FILELIST}" | \
- $COPY_CMD || exit 1
+ eval $COPY_CMD || exit 1
fi
cd "${OLDPWD}"
;;