projects
/
live-boot-grml.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merging casper 1.224.
[live-boot-grml.git]
/
bin
/
live-snapshot
diff --git
a/bin/live-snapshot
b/bin/live-snapshot
index
d942c90
..
55673bb
100755
(executable)
--- a/
bin/live-snapshot
+++ b/
bin/live-snapshot
@@
-59,6
+59,7
@@
TMP_FILELIST="${PROGRAM}.list"
# Command line defaults and declarations
SNAP_COW="${DEF_SNAP_COW}"
SNAP_DEV=""
# Command line defaults and declarations
SNAP_COW="${DEF_SNAP_COW}"
SNAP_DEV=""
+SNAP_MNT=""
SNAP_OUTPUT=""
SNAP_RESYNC_STRING=""
SNAP_TYPE="cpio"
SNAP_OUTPUT=""
SNAP_RESYNC_STRING=""
SNAP_TYPE="cpio"
@@
-237,11
+238,12
@@
Defaults ()
# Parse resync string
if [ -n "${SNAP_RESYNC_STRING}" ]
then
# 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 -e 's|^/root\([^:.]*\).*$|'"${DEF_SNAP_COW}"'\1|
')
SNAP_DEV=$(echo "${SNAP_RESYNC_STRING}" | cut -f2 -d ':')
SNAP_DEV=$(echo "${SNAP_RESYNC_STRING}" | cut -f2 -d ':')
- DEST="${MOUNTP}/$(echo ${SNAP_RESYNC_STRING} | cut -f3 -d ':')"
+ SNAP_MNT=$(echo "${SNAP_RESYNC_STRING}" | cut -f3 -d ':')
+ DEST="${MOUNTP}/${SNAP_MNT}"
- case "${
DES
T}" in
+ case "${
SNAP_MN
T}" in
*.cpio.gz)
SNAP_TYPE="cpio"
;;
*.cpio.gz)
SNAP_TYPE="cpio"
;;
@@
-254,10
+256,14
@@
Defaults ()
SNAP_TYPE="jffs2"
;;
SNAP_TYPE="jffs2"
;;
-
""|
*.ext2|*.ext3)
+ *.ext2|*.ext3)
SNAP_TYPE="ext2"
;;
SNAP_TYPE="ext2"
;;
+ "")
+ SNAP_TYPE="whole_partition"
+ ;;
+
*.ext4)
SNAP_TYPE="ext4"
;;
*.ext4)
SNAP_TYPE="ext4"
;;
@@
-294,7
+300,7
@@
Defaults ()
Validate_input ()
{
case "${SNAP_TYPE}" in
Validate_input ()
{
case "${SNAP_TYPE}" in
- cpio|squashfs|jffs2|ext2|ext3|ext4)
+ cpio|squashfs|jffs2|ext2|ext3|ext4
|whole_partition
)
;;
*)
;;
*)
@@
-340,7
+346,7
@@
Entry_is_modified ()
if [ -e "${entry}" ] || [ -L "${entry}" ]
then
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
then
return 0
fi
@@
-350,17
+356,25
@@
Entry_is_modified ()
Do_filelist ()
{
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
TMP_FILELIST=$1
+
if [ -f "${SNAP_LIST}" ]
then
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
# 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
do
if [ -d "${entry}" ]
then
- cd /
find "${entry}" | while read line
do
if Entry_is_modified "${line}"
find "${entry}" | while read line
do
if Entry_is_modified "${line}"
@@
-368,26
+382,22
@@
Do_filelist ()
printf "%s\000" "${line}" >> "${TMP_FILELIST}"
fi
done
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
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}"
else
cd "${SNAP_COW}"
+ # removing whiteouts from list
find . -path '*.wh.*' -prune -o -print0 >> "${TMP_FILELIST}"
cd "${OLDPWD}"
find . -path '*.wh.*' -prune -o -print0 >> "${TMP_FILELIST}"
cd "${OLDPWD}"
+ # echo Working dir
echo "${SNAP_COW}"
fi
}
echo "${SNAP_COW}"
fi
}
@@
-413,7
+423,14
@@
Do_snapshot ()
mksquashfs "${SNAP_COW}" "${DEST}" -ef "${TMP_FILELIST}"
;;
mksquashfs "${SNAP_COW}" "${DEST}" -ef "${TMP_FILELIST}"
;;
- cpio)
+ cpio|whole_partition)
+ if [ "${SNAP_TYPE}" = "cpio" ]
+ then
+ COPY_CMD="cpio --quiet -o0 -H newc | gzip -9c > ${DEST}"
+ else
+ COPY_CMD="cpio --quiet -pumd0 ${DEST}/"
+ fi
+
WORKING_DIR=$(Do_filelist "${TMP_FILELIST}")
cd "${WORKING_DIR}"
if [ -e "${EXCLUDE_LIST}" ]
WORKING_DIR=$(Do_filelist "${TMP_FILELIST}")
cd "${WORKING_DIR}"
if [ -e "${EXCLUDE_LIST}" ]
@@
-426,12
+443,10
@@
Do_snapshot ()
grep -F -v -f "${EXCLUDE_LIST}" | \
tr '\n' '\0' | \
tr '\1' '\n' | \
grep -F -v -f "${EXCLUDE_LIST}" | \
tr '\n' '\0' | \
tr '\1' '\n' | \
- cpio --quiet -o0 -H newc | \
- gzip -9c > "${DEST}" || exit 1
+ eval $COPY_CMD || exit 1
else
cat "${TMP_FILELIST}" | \
else
cat "${TMP_FILELIST}" | \
- cpio --quiet -o0 -H newc | \
- gzip -9c > "${DEST}" || exit 1
+ eval $COPY_CMD || exit 1
fi
cd "${OLDPWD}"
;;
fi
cd "${OLDPWD}"
;;