[SCM] Debian Live initramfs hook branch, master, updated. 1.139.1-3-14-gbb27306

Marco Amadori marco.amadori at gmail.com
Wed Oct 1 00:02:56 UTC 2008


The following commit has been merged in the master branch:
commit d8bdc777d760a0fadc07cb07d55431ebe6d5c9b2
Author: Marco Amadori <marco.amadori at gmail.com>
Date:   Fri Sep 19 00:31:57 2008 +0200

    live-snapshot: fixed include-list handling.
    
    * When "/etc/live-snapshot.list" is present, all standard files and
      directories listed there are saved on shutdown.
      Now it saves them only if they are modified, and also handles
      dangling symbolic links. This beaviour will be gentle to live-systems
      upgrades on the same hardware since new unmodified to-be-snapshotted files
      will be no more overwritten by old unnecessary saved cruft.
      It still does not handle removal of deleted files.
    
    Signed-off-by: Marco Amadori <amadorim at vdavda.com>

diff --git a/bin/live-snapshot b/bin/live-snapshot
index f77541f..5606436 100755
--- a/bin/live-snapshot
+++ b/bin/live-snapshot
@@ -320,23 +320,49 @@ Mount_device ()
 	esac
 }
 
+Entry_is_modified ()
+{
+	# Returns true if file exists and it is also present in "cow" directory
+	# This means it is modified in respect to read-only media, so it deserve
+	# to be saved
+
+	entry="${1}"
+
+	if [ -e "${entry}" ] || [ -L "${entry}" ]
+	then
+		if [ -e "${DEF_SNAP_COW}/${entry}" ] || [ -L "${DEF_SNAP_COW}/${entry}" ]
+		then
+			return 0
+		fi
+	fi
+	return 1
+}
+
 Do_filelist ()
 {
-	# BUGS: supports only cpio.gz types right now
+	# BUGS: supports only cpio.gz types, and do not handle deleted files yet
+
 	TMP_FILELIST=$1
 	if [ -f "${SNAP_LIST}" ]
 	then
 		# Generate include list
 		for entry in $(cat "${SNAP_LIST}" | grep -v '^#.*$' | grep -v '^ *$')
 		do
-			if [ -f "${entry}" ]
-			then
-				printf "%s\000" "${entry}" >> "${TMP_FILELIST}"
-			elif [ -d "${entry}" ]
+			if [ -d "${entry}" ]
 			then
 				cd /
-				find "${entry}" -print0 >> "${TMP_FILELIST}"
+				find "${entry}" | while read line
+				do
+					if Entry_is_modified "${line}"
+					then
+						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
 

-- 
Debian Live initramfs hook



More information about the debian-live-changes mailing list