#!/bin/bash TMPFILE=`/bin/mktemp /tmp/fschecklist.XXXXXX` RESULT=/tmp/RESULT.`date +%Y_%m_%d_%H_%M` function usage() { fscheck=`basename $0` echo "Usage: $fscheck [basedir] [exclusionfilelist]" echo "Make a disk integrity check." echo echo "-h this help message." } function getFiles() { #argument 1 => base directory #argument 2...n=> a list of files and directories to be ignored. basedir=$1 ignorelist=$2 command='find' command="$command $basedir" for i in $ignorelist do command=$command' -path '$i' -prune -o' done if [ -n "$ignorelist" ]; then command="$command"' -true' fi command="$command"' \( -type d -printf "0 0 %p\n" -o -type f -exec cksum {} \; \)' eval $command > $RESULT cat $RESULT | sort -f -k 3 -d } nargs=$# # Se o número de argumentos for 0, temos o comportamento default, # buscar todos os arquivos a partir do diretório corrente. if [ ${nargs} -eq 0 ]; then BASEDIR=`pwd` else # Se o número de argumentos for 1, # buscar todos os arquivos a partir do diretório passado como # argumento. if [ ${nargs} -eq 1 ]; then BASEDIR=$1 # Se o número de argumentos for maior que 2, buscar todos os # arquivos a partir do diretório $1 ignorando toda a lista de # arquivos de diretórios passados como argumentos. else BASEDIR=$1 shift IGNORELIST=$@ fi fi # Se o arquivo não existe ou não é um diretório. if [ ! -e "$BASEDIR" ] || [ -f "$BASEDIR" ]; then echo "`basename $0`: '$BASEDIR' is not a directory" usage exit 1 fi getFiles "$BASEDIR" "$IGNORELIST" rm -rf $TMPFILE rm -rf $RESULT