Undelete restore Compact Flash за 5 минут

Случилось то, чего стоило бы ожидать - фотоаппарат был подвергнут насильственному досмотру и с него стерта вся медия. Побродив немного по интернету понял, что программа обойдется мне в минимум 20$, ибо Trial версия не известно что откажется делать, и...

вообщем я было загрустил, пока не набрел на одну вещь.
Вообще, решение задачи нахождения стертых файлов во многом зависит от файловой системы. Узнать тип файловой системы просто: vaulter@vaulter-desktop:~$ fdisk -l

Диск /dev/sdb: 1055 МБ, 1055416320 байт
16 heads, 63 sectors/track, 2045 cylinders
Units = цилиндры of 1008 * 512 = 516096 bytes
Disk identifier: 0x00000000

Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb1 * 1 2045 1030648+ 6 FAT16

То есть, по сути, восстановить файлы надо с FAT16. Это "волшебство" (за которые просют денег) доступно нам с начала 90х. Однако, был сделан еще один финт ушами:
vaulter@vaulter-desktop:~$ RESTORE_FILE=~/sony.date +%F.dd
vaulter@vaulter-desktop:~$ dd if=/dev/sdb1 of=$RESTORE_FILE bs=1024
, тем самым скопировав полный образ Flash ки (у меня копирование с CompactFlash емкостью 1Gb заняло несколько минут) я избавил фотоаппарат от мучений, отключив его - информация уже была в надежных руках! :)
Пока я ждал копирования, смотрел watch du -h $RESTORE_FILE в отдельной консольке :)
Затем скачав по упомянутой ссылке foremost, make и
vaulter@vaulter-desktop:~$ src/foremost/foremost -t mpg,jpeg -i $RESTORE_FILE

Несколько фоток конечно "побилось", я думаю, это неплохой результат, учитывая то, что я отдал денег только за несколько килобайт трафика.

зы: скриптик, выдающий изменения в /dev папке :)
vaulter@vaulter-desktop:~$ cat ./mondev.sh

#!/bin/sh
#Monitor of devices?
# TODO just KDE popup for a now,
# but MUST be chippy and configurable
# via COMMAND LINE :)
DELAY=1
TTY=`tty | sed s/\\\//./g`
MYNAME=`namei $0 | grep -`
TMPDIR=/tmp
LASTTMPFILE=$TMPDIR/$MYNAME$TTY
TMPFILE=$TMPDIR/.$MYNAME$TTY
while [ 1 ]; do
  ls -la /dev > "$TMPFILE"
  if [ -f "$LASTTMPFILE" ]; then
    diff -u "$LASTTMPFILE" "$TMPFILE";
  fi
  cat "$TMPFILE" > "$LASTTMPFILE"
  sleep $DELAY
done