+#!/bin/sh
+
+# Persistence enhancer script
+# This script saves precious time on slow persistence devices/image files
+# and writes on flash based device.
+# a tmpfs on $PERSTMP is mounted and directories listed in
+# /etc/live-persistence.binds will be copied there and then bind mounted back.
+
+#set -e
+
+# initramfs-tools header
+
+PREREQ=""
+
+prereqs()
+{
+ echo "${PREREQ}"
+}
+
+case "${1}" in
+ prereqs)
+ prereqs
+ exit 0
+ ;;
+esac
+
+# live-initramfs header
+
+if [ -z "${PERSISTENT}" ] || [ -n "${NOPERSISTENT}" ] || [ -z "${PERSISTENCE_IS_ON}" ] || [ ! -f /root/etc/live-persistence.binds ]
+then
+ exit 0
+fi
+
+. /scripts/live-functions
+
+# live-initramfs script
+
+dirs="$(cat /root/etc/live-persistence.binds | grep -v '^#.*$' | grep -v '^ *$' | tr '\n' '\0')"
+if [ -z "${dirs}" ]
+then
+ exit 0
+fi
+
+log_begin_msg "Moving persistence bind mounts"
+
+PERSTMP="/root/live/persistence-binds"
+CPIO="/bin/cpio"
+
+if [ ! -d "${PERSTMP}" ]
+then
+ mkdir -p "${PERSTMP}"
+fi
+
+mount -t tmpfs tmpfs "${PERSTMP}"
+
+for dir in $(echo "${dirs}" | tr '\0' '\n')
+do
+ if [ ! -e "/root/${dir}" ] && [ ! -L "/root/${dir}" ]
+ then
+ # directory do not exists, create it
+ mkdir -p "/root/${dir}"
+ elif [ ! -d "/root/${dir}" ]
+ then
+ # it is not a directory, skip it
+ break
+ fi
+
+ # Copy previous content if any
+ cd "/root/${dir}"
+ find . -print0 | ${CPIO} -pumd0 "${PERSTMP}/${dir}"
+ cd "${OLDPWD}"
+
+ # Bind mount it to origin
+ mount -o bind "${PERSTMP}/${dir}" "/root/${dir}"
+done
+
+log_end_msg