#!/bin/bash # $HeadURL$ $LastChangedRevision$ PROGNAME=`basename $0` SANDPIT=`pwd` . $(ade-config ade_share_prefix)/include/adetestsupport.sh ############################################################################## # # Purpose of test: to verify the correct handling of hard links. # ############################################################################## make_invariant() { sed -e "s/^\(Unix-Time\) .*/\1 UNIX-TIME-BLANKED-BY-$PROGNAME/" \ -e "s/^\([^:]*:[^:]*:[^:]*:[^:]*\):\([^:]*\):\([^:]*\):\(.*\)/\1:UID-BLANKED-BY-$PROGNAME:GID-BLANKED-BY-$PROGNAME:\4/" } echo "creating base directories ..." umask 022 mkdir $SANDPIT/root $SANDPIT/scans echo "scanning (with no files present) ..." ( cd $SANDPIT/root; find . | mkfad ) > $SANDPIT/scans/before.fad echo "creating 20 hardlinked files ..." echo "dummy content" > $SANDPIT/root/muchhardlinkedfile I=1 while [ $I -le 4 ]; do ln $SANDPIT/root/muchhardlinkedfile $SANDPIT/root/muchhardlinkedfile.$I I=`expr $I + 1` done echo "scanning again ..." ( cd $SANDPIT/root; find . | mkfad ) > $SANDPIT/scans/after.fad echo "diffing ..." faddiff $SANDPIT/scans/before.fad $SANDPIT/scans/after.fad || true mv $SANDPIT/scans/after.fad $SANDPIT/scans/before.fad echo "deleting one file ..." rm $SANDPIT/root/muchhardlinkedfile.2 echo "scanning again ..." ( cd $SANDPIT/root; find . | mkfad ) > $SANDPIT/scans/after.fad echo "diffing ..." faddiff $SANDPIT/scans/before.fad $SANDPIT/scans/after.fad || true mv $SANDPIT/scans/after.fad $SANDPIT/scans/before.fad echo "creating two pairs of hardlinked files ..." touch $SANDPIT/root/pair1_file1 touch $SANDPIT/root/pair2_file1 ln $SANDPIT/root/pair1_file1 $SANDPIT/root/pair1_file2 ln $SANDPIT/root/pair2_file1 $SANDPIT/root/pair2_file2 echo "scanning again ..." ( cd $SANDPIT/root; find . | mkfad ) > $SANDPIT/scans/after.fad echo "diffing ..." faddiff $SANDPIT/scans/before.fad $SANDPIT/scans/after.fad || true mv $SANDPIT/scans/after.fad $SANDPIT/scans/before.fad echo "crossing links ..." rm $SANDPIT/root/pair1_file2 $SANDPIT/root/pair2_file2 ln $SANDPIT/root/pair1_file1 $SANDPIT/root/pair2_file2 ln $SANDPIT/root/pair2_file1 $SANDPIT/root/pair1_file2 echo "scanning again ..." ( cd $SANDPIT/root; find . | mkfad ) > $SANDPIT/scans/after.fad echo "diffing ..." faddiff $SANDPIT/scans/before.fad $SANDPIT/scans/after.fad || true mv $SANDPIT/scans/after.fad $SANDPIT/scans/before.fad echo "all done"