All pastes #918922 Raw Edit

Anonym

public text v1 · immutable
#918922 ·published 2008-02-26 13:36 UTC
rendered paste body
# Configuration of Device, blocksize to read, OS blocksize of /proc/partitions, number of 
# cycles after which status is printed and output filename prefix
 
BS="2097152" 
OS_BS="1024"
DEVICE="sdb"
SKIPOUT=4 
PREFIX="apple_edm"


# Aquiry of number of blocks via /proc/partitions using ugly sed commands and calculation 
# of number of reads to do from the device 
BLOCKS="$(grep ${DEVICE}$ /proc/partitions | sed -e 's/[ ]*[0-9]*[ ]*[0-9]*[ ]*//' -e 's/[ ]*[a-zA-Z]*$//')" SKIP=$(( $BS / $OS_BS )) 
READS=$(( ( $BLOCKS +1 ) / $SKIP )); 


# Some Counter initialisation
COUNTER=0 
OUT=-1; 

# Output of User information
echo "$BLOCKS blocks in device '$DEVICE' lead to $READS reads of $BS bytes"; 
echo "" > ${PREFIX}_${DEVICE}; echo "Output goes to ./${PREFIX}_${DEVICE}"; 

echo -n "Reading and checksuming Blocks: ";  

# As long as there are blocks left to read
while [ "$COUNTER" -lt "$READS" ]; do 
  OUT=$(( $OUT + 1 )); 

   # If its time to output something, do so
  if [ "$OUT" -eq "$(( $SKIPOUT - 1 ))" ]; then 
    echo -n "[$(( $COUNTER - $SKIPOUT + 1 )) - $(( $COUNTER ))] "; 
    OUT=-1; 
  fi; 

   # Read and checksum block and put the result in this variable
  SUM=$( dd if=/dev/$DEVICE bs=$BS skip=$COUNTER count=1 2>/dev/null | md5sum ); 

   # Write that to the file
  echo "SUM $SUM READ $COUNTER" >> ${PREFIX}_${DEVICE}; COUNTER=$(( $COUNTER + 1 )); 
done

# Done