Do_filelist ()
{
- # BUGS: supports only cpio.gz types, and do not handle deleted files yet
+ # BUGS: supports only cpio.gz types, and does 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 '^ *$')
+ # Generate include list removing empty and commented lines
+ for entry in $(sed -e '/^ *$/d' -e '/^#.*$/d' "${SNAP_LIST}")
do
if [ -d "${entry}" ]
then
if [ -e "${EXCLUDE_LIST}" ]
then
# Add explicitly excluded files
- cat "${EXCLUDE_LIST}" | grep -v '^#.*$' | grep -v '^ *$' >> "${TMP_FILELIST}"
+ grep -v '^#.*$' "${EXCLUDE_LIST}" | grep -v '^ *$' >> "${TMP_FILELIST}"
fi
cd "${OLDPWD}"
then
# Convert \0 to \n and tag existing (rare but possible) \n in filenames,
# this to let grep -F -v do a proper work in filtering out
- cat "${TMP_FILELIST}" | tr '\n' '\1' | tr '\0' '\n' | grep -F -v -f "${EXCLUDE_LIST}" | tr '\n' '\0' | tr '\1' '\n' | cpio --quiet -o0 -H newc | gzip -9c > "${DEST}" || exit 1
+ cat "${TMP_FILELIST}" | \
+ tr '\n' '\1' | \
+ tr '\0' '\n' | \
+ grep -F -v -f "${EXCLUDE_LIST}" | \
+ tr '\n' '\0' | \
+ tr '\1' '\n' | \
+ cpio --quiet -o0 -H newc | \
+ gzip -9c > "${DEST}" || exit 1
else
- cat "${TMP_FILELIST}" | cpio --quiet -o0 -H newc | gzip -9c > "${DEST}" || exit 1
+ cat "${TMP_FILELIST}" | \
+ cpio --quiet -o0 -H newc | \
+ gzip -9c > "${DEST}" || exit 1
fi
cd "${OLDPWD}"
;;
- # ext2|ext3 and jffs2 does not support easely an exclude list, files should be copied in another directory in order to filter content
+ # ext2|ext3 and jffs2 does not easily support an exclude list; files
+ # should be copied to another directory in order to filter content
ext2|ext3)
DU_DIM="$(du -ks ${SNAP_COW} | cut -f1)"
REAL_DIM="$(expr ${DU_DIM} + ${DU_DIM} / 20)" # Just 5% more to be sure, need something more sophistcated here...