2015-11-06 17:40:33 +01:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
set -x
|
|
|
|
|
|
|
|
source ./constraint.sh
|
|
|
|
if ! [ "${ID}" -ge "1000" ]; then
|
2017-01-11 04:03:33 +01:00
|
|
|
echo "GROOMER: This script cannot run as root."
|
2015-11-06 17:40:33 +01:00
|
|
|
exit
|
|
|
|
fi
|
|
|
|
|
|
|
|
clean(){
|
2017-01-11 04:03:33 +01:00
|
|
|
echo "GROOMER: Cleaning up after groomer.sh."
|
2015-11-06 17:40:33 +01:00
|
|
|
|
2017-01-12 20:00:51 +01:00
|
|
|
cp ${GROOM_LOG} "${DST_MNT}/groomer_log.txt"
|
2017-01-11 17:34:09 +01:00
|
|
|
|
2017-01-12 20:00:51 +01:00
|
|
|
# Write anything in memory to disk
|
|
|
|
${SYNC}
|
2015-11-06 17:40:33 +01:00
|
|
|
|
2017-01-12 20:00:51 +01:00
|
|
|
# Unmount source
|
|
|
|
pumount ${SRC}
|
2017-01-11 17:34:09 +01:00
|
|
|
|
2017-01-12 20:00:51 +01:00
|
|
|
# Clean up and unmount destination
|
2015-11-06 17:40:33 +01:00
|
|
|
rm -rf ${TEMP}
|
|
|
|
rm -rf ${ZIPTEMP}
|
|
|
|
pumount ${DST}
|
|
|
|
|
|
|
|
exit
|
|
|
|
}
|
|
|
|
|
|
|
|
trap clean EXIT TERM INT
|
|
|
|
|
|
|
|
# De we have a source device
|
|
|
|
if [ ! -b ${DEV_SRC} ]; then
|
2017-01-11 04:03:33 +01:00
|
|
|
echo "GROOMER: Source device (${DEV_SRC}) does not exist."
|
2015-11-06 17:40:33 +01:00
|
|
|
fi
|
2017-01-11 17:34:09 +01:00
|
|
|
|
2015-11-06 17:40:33 +01:00
|
|
|
# Find the partition names on the source device
|
|
|
|
DEV_PARTITIONS=`ls "${DEV_SRC}"* | grep "${DEV_SRC}[1-9][0-6]*" || true`
|
|
|
|
if [ -z "${DEV_PARTITIONS}" ]; then
|
2017-01-11 04:03:33 +01:00
|
|
|
echo "GROOMER: ${DEV_SRC} does not have any partitions."
|
2015-11-06 17:40:33 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Do we have a destination device
|
2017-01-11 17:34:09 +01:00
|
|
|
if [ ! -b "${DEV_DST}" ]; then
|
2017-01-11 04:03:33 +01:00
|
|
|
echo "GROOMER: Destination device (/dev/${DEV_DST}) does not exist."
|
2015-11-06 17:40:33 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
# mount and prepare destination device
|
|
|
|
if ${MOUNT}|grep ${DST}; then
|
|
|
|
${PUMOUNT} ${DST} || true
|
|
|
|
fi
|
|
|
|
# uid= only works on a vfat FS. What should wedo if we get an ext* FS ?
|
|
|
|
${PMOUNT} -w ${DEV_DST} ${DST}
|
|
|
|
if [ ${?} -ne 0 ]; then
|
2017-01-12 20:00:51 +01:00
|
|
|
echo "GROOMER: Unable to mount ${DEV_DST} on ${DST_MNT}"
|
2015-11-06 17:40:33 +01:00
|
|
|
exit
|
|
|
|
else
|
2017-01-12 20:00:51 +01:00
|
|
|
echo "GROOMER: Target USB device (${DEV_DST}) mounted at ${DST_MNT}"
|
2017-01-11 17:34:09 +01:00
|
|
|
|
|
|
|
# rm -rf "/media/${DST}/FROM_PARTITION_"*
|
2015-11-06 17:40:33 +01:00
|
|
|
|
|
|
|
# prepare temp dirs and make sure it's empty
|
2017-01-11 17:34:09 +01:00
|
|
|
# mkdir -p "${TEMP}"
|
|
|
|
# mkdir -p "${ZIPTEMP}"
|
|
|
|
# mkdir -p "${LOGS}"
|
2015-11-06 17:40:33 +01:00
|
|
|
|
2017-01-11 17:34:09 +01:00
|
|
|
# rm -rf "${TEMP}/"*
|
|
|
|
# rm -rf "${ZIPTEMP}/"*
|
|
|
|
# rm -rf "${LOGS}/"*
|
2015-11-06 17:40:33 +01:00
|
|
|
fi
|
|
|
|
|
2017-01-12 20:00:51 +01:00
|
|
|
${PMOUNT} -w ${DEV_SRCONE} ${SRC}
|
2017-01-11 04:03:33 +01:00
|
|
|
|
2015-11-06 17:40:33 +01:00
|
|
|
# Groom da kitteh!
|
|
|
|
|
|
|
|
# Find the FS types
|
|
|
|
# lsblk -n -o name,fstype,mountpoint,label,uuid -r
|
|
|
|
|
2017-01-11 17:34:09 +01:00
|
|
|
# PARTCOUNT=1
|
|
|
|
# for partition in ${DEV_PARTITIONS}
|
|
|
|
# do
|
|
|
|
# # Processing a partition
|
|
|
|
# echo "GROOMER: Processing partition ${partition}"
|
|
|
|
# if [ `${MOUNT} | grep -c ${SRC}` -ne 0 ]; then
|
|
|
|
# ${PUMOUNT} ${SRC}
|
|
|
|
# fi
|
|
|
|
|
|
|
|
# ${PMOUNT} -w ${partition} ${SRC}
|
|
|
|
# ls "/media/${SRC}" | grep -i autorun.inf | xargs -I {} mv "/media/${SRC}"/{} "/media/${SRC}"/DANGEROUS_{}_DANGEROUS || true
|
|
|
|
# ${PUMOUNT} ${SRC}
|
|
|
|
# ${PMOUNT} -r ${partition} ${SRC}
|
|
|
|
# if [ ${?} -ne 0 ]; then
|
|
|
|
# echo "GROOMER: Unable to mount ${partition} on /media/${SRC}"
|
|
|
|
# else
|
|
|
|
# echo "GROOMER: ${partition} mounted at /media/${SRC}"
|
|
|
|
|
|
|
|
# # Print the filenames on the current partition in a logfile
|
|
|
|
# find "/media/${SRC}" -fls "${LOGS}/Content_partition_${PARTCOUNT}.txt"
|
|
|
|
|
|
|
|
# # create a directory on ${DST} named PARTION_$PARTCOUNT
|
|
|
|
# target_dir="/media/${DST}/FROM_PARTITION_${PARTCOUNT}"
|
|
|
|
# echo "GROOMER: Copying to ${target_dir}"
|
|
|
|
# mkdir -p "${target_dir}"
|
|
|
|
# LOGFILE="${LOGS}/processing.txt"
|
|
|
|
|
|
|
|
# echo "GROOMER: ==== Starting processing of /media/${SRC} to ${target_dir}. ====" >> ${LOGFILE}
|
|
|
|
# filecheck.py --source /media/${SRC} --destination ${target_dir} || true
|
|
|
|
# echo "GROOMER: ==== Done with /media/${SRC} to ${target_dir}. ====" >> ${LOGFILE}
|
|
|
|
|
|
|
|
# ls -lR "${target_dir}"
|
|
|
|
# fi
|
|
|
|
# let PARTCOUNT=`expr $PARTCOUNT + 1`
|
|
|
|
# done
|
2015-11-06 17:40:33 +01:00
|
|
|
|
|
|
|
# The cleanup is automatically done in the function clean called when
|
|
|
|
# the program quits
|