Fixed disco-fs-diff to only use rsync, sed, grep, etc to produce the filesystem changelog, python script is gone Minor fixups to other scripts
54 lines
2.0 KiB
Bash
Executable File
54 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
. /etc/disco/client.cfg
|
|
|
|
SCRIPTROOT=$(dirname $(readlink -f $0))
|
|
if [ "$NOOP" != "" ]; then
|
|
DISCOROOT=/var/disco/testfs/noop
|
|
else
|
|
DISCOROOT=/var/disco/testfs/real
|
|
fi
|
|
|
|
cd $DISCOROOT
|
|
|
|
rsync --checksum --times --perms --owner --group -ani ./scratchfs/ ./rootfs/ |\
|
|
grep -v ".unionfs.*/$" |\
|
|
sed s/"\.\/scratchfs"/""/ |\
|
|
sed s/"\.unionfs\/"/""/ |\
|
|
grep -v "./$" |\
|
|
sed s/"^[<>ch\.*]d"/"File: directory: "/ |\
|
|
sed s/"^[<>ch\.*]f"/"File: file: "/ |\
|
|
sed s/"^[<>ch\.*]L"/"File: symlink: "/ |\
|
|
sed s/"^[<>ch\.*]D"/"File: device: "/ |\
|
|
sed s/"^[<>ch\.*]S"/"File: special: "/ |\
|
|
sed s/": \([\.cstpoguax+]*\) \(.*\)$"/": \2 : \1"/ |\
|
|
sed s/"+++++++++$"/"Created"/ |\
|
|
sed s/" [\.cstpoguax]*$"/" Modified"/ |\
|
|
sed s/"_HIDDEN~ : Created"/" : Deleted"/ |\
|
|
sed s/"^\(.*\)\$"/"info: \1"/g |\
|
|
while read LINE
|
|
do
|
|
FNAME=$(echo $LINE | cut -d : -f 4 | sed s/"^ *"/""/ | sed s/" *$"/""/)
|
|
MD5_NEW=$(md5sum ${DISCOROOT}/scratchfs/${FNAME} 2>/dev/null| cut -d " " -f 1)
|
|
MD5_OLD=$(md5sum /${FNAME} 2>/dev/null| cut -d " " -f 1)
|
|
PERMS_NEW=$(stat --format "%G:%U %a" ${DISCOROOT}/scratchfs/${FNAME} 2>/dev/null)
|
|
PERMS_OLD=$(stat --format "%G:%U %a" /${FNAME} 2>/dev/null)
|
|
if [ ! -d /${FNAME} ] && [ ! -d ${DISCOROOT}/scratchfs/${FNAME} ]; then
|
|
DIFF=$(echo; diff /${FNAME} ${DISCOROOT}/scratchfs/${FNAME} 2>/dev/null > /tmp/$$.diff )
|
|
fi
|
|
file ${DISCOROOT}/scratchfs/${FNAME} 2>&1 | grep ASCII >/dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
CONTENT=$(echo "Text"; cat ${DISCOROOT}/scratchfs/${FNAME} | sed s/"^"/"> "/g > /tmp/$$.content)
|
|
fi
|
|
echo $LINE |\
|
|
sed -e s/"Created$"/"Created : md5=[${MD5_NEW}] perms=[${PERMS_NEW}]"/ |\
|
|
sed -e s/"Modified$"/"Modified : md5=[${MD5_OLD} => ${MD5_NEW}] perms=[${PERMS_OLD} => ${PERMS_NEW}]"/
|
|
if [ -f /tmp/$$.diff ]; then
|
|
cat /tmp/$$.diff
|
|
elif [ -f /tmp/$$.content ]; then
|
|
cat /tmp/$$.content
|
|
fi
|
|
rm -f /tmp/$$.content /tmp/$$.diff 2>/dev/null
|
|
done
|
|
|
|
rm -f /tmp/$$* |