In the FAQ Andreas Dilger states:
In order to ensure that ext3 can safely resume an unlink after a crash, it actually zeros out the block pointers in the inode, whereas ext2 just marks these blocks as unused in the block bitmaps and marks the inode as "deleted" and leaves the block pointers alone. Your only hope is to "grep" for parts of your files that have been deleted and hope for the best.
However, several tools exist that try to recover/undelete lost inodes anyway - with varying success:
- extundelete (last updated 2009-04)
- Ext3Grep (last updated 2008-12-14)
- salvage (last updated 03/2006)
- ext3rminator, also available as a Debian package (last updated 2005-08-21)
- undel-ext3.sh (last updated 05/2004)
- Recover (last updated 2002-03-14) is also available as a Debian package, but seems to be strictly limited to ext2 only.
There are also free (as in beer) recovery tools for the Microsoft Windows operating system that are able to recover data off ext2/3 partitions: