#!/bin/sh

if [ -z "$1" ]
then
	echo ""
	echo "    Usage: $0 FILE_NAME"
	echo ""
	exit
fi

echo " ==============================================================================="

FILE="$1"
OUTFILE="/restore/${FILE}"

if [ -e "$OUTFILE" ] && [ "$2" != "FORCE" ]
then
	echo "     Output file: $OUTFILE already exists:"
	echo -n "    "
	ls -al "$OUTFILE"
	exit
fi

OUTDIR=`dirname "$OUTFILE"`
AGBLOCKS=$(xfs_db -r /dev/sdb1 -c sb -c p |grep ^agblocks | sed 's/.* = //')
BLOCKSIZE=$(xfs_db -r /dev/sdb1 -c sb -c p |grep ^blocksize | sed 's/.* = //')

INODE=`ls -i "$FILE"|awk '{print $1}'`
INFO=`xfs_db -r /dev/sdb1 -c "inode $INODE" -c "bmap"`
# data offset 0 startblock 5115177472 (19/14903808) count 121121 flag 0

if [ -z "$INFO" ]
then
	echo "   File: $FILE does not have any extents. Cannot restore any data."
	exit
fi

EXTENTS=`echo $INFO | awk -F\( '{print $2}'|awk -F\/ '{print $1}'`
OFFSET=`echo $INFO | awk -F\/ '{print $2}' | awk -F\) '{print $1}'`
COUNT=`echo $INFO | awk '{print $8}'`

echo "        FILE: $FILE"
echo "     OUTFILE: $OUTFILE"
echo "       INODE: $INODE"
echo "        INFO: $INFO"
echo "     EXTENTS: $EXTENTS"
echo "      OFFSET: $OFFSET"
echo "       COUNT: $COUNT"

echo "       Making directory: $OUTDIR"
#mkdir -p `echo $OUTDIR | sed -e 's# #\\ #' `
mkdir -p "${OUTDIR}"

echo -n "       Running the restore command: "
# COMMAND="dd if=/dev/sdb1 bs=${BLOCKSIZE} skip=$((${AGBLOCKS} * ${EXTENTS} + ${OFFSET})) count=${COUNT} of=\"$OUTFILE\""
echo -n "    COMMAND: "
echo dd if=/dev/sdb1 bs=${BLOCKSIZE} skip=$((${AGBLOCKS} * ${EXTENTS} + ${OFFSET})) count=${COUNT} of="${OUTFILE}"
# RESULT=`$COMMAND`
dd if=/dev/sdb1 bs=${BLOCKSIZE} skip=$((${AGBLOCKS} * ${EXTENTS} + ${OFFSET})) count=${COUNT} of="${OUTFILE}"

echo -n "   Orig File: "
ls -al "$FILE"
echo -n "    New File: "
ls -al "$OUTFILE"
