File integrity
A script using bash and md5sum to keep track of file integrity.
# Change the separator to allow for filenames containing spaces # (the default is " \t\n", which confuses the for loop) IFS=$'\n' FOLDERS=`find /Volumes/disk\ 1/Pictures/Photos -type d | sed 's/ /\\ /g'` for FOLDER in $FOLDERS; do # mind you, this will only work with absolute pathnames if [ -d $FOLDER ]; then echo "$0: INFO: Processing" $FOLDER cd $FOLDER for FILE in `ls -1|grep -i .jpg`; do echo "$0: INFO: Checking $FILE" djpeg -outfile /dev/null $FILE if [ $? -ne 0 ]; then echo "$0: ERROR: $FOLDER/$FILE is unreadable as JPEG" fi done if [ -e MD5SUMS ]; then md5sum -b -c MD5SUMS 2>&1 > /dev/null if [ $? -eq 1 ]; then echo "$0: ERROR: in $FOLDER:" md5sum -c MD5SUMS | grep FAILED 2>&1 fi else echo "$0: WARNING: no MD5SUMS in $FOLDER, creating..." md5sum -b *.* > MD5SUMS # The obvious bit, in retrospect chown username:groupname MD5SUMS fi fi done