[Jfs-discussion] Announcing jfsrec - A JFS recovery tool
Brought to you by:
blaschke-oss,
shaggyk
From: <lu...@ik...> - 2006-11-08 06:00:45
|
Dear all, jfsrec is now available for download, currently only as source code (se below). Everyone is welcome to test this program. It is released as free software and licensed under the GPL. Please submit any bugs that you may find using the bug tracker at http://sourceforge.net/tracker/?func=add&group_id=181515&atid=897511 Please continue further discussion on the jfsrec-related mailing list or forums at: http://sourceforge.net/forum/?group_id=181515 or http://sourceforge.net/mail/?group_id=181515 jfsrec is a tool that can extract files and directories from a damaged JFS volume. What it can do: - Recover files and save them to a mounted filesystem. - Recover the directory structure. - Recover file and directory names. - Prioritize important files, by matching them with a regular expression. - Exclude unimportant files. - Optionally skip files that seems to be fubar:ed. How it does it: First, the entire volume is scanned for potential inodes. Seemingly sane inodes are saved for postprocessing. The postprocessing filters out inodes that are not part of an inode extent, are duplicates, are unallocated, or are part of an older installation. The filtered out inodes are saved, and can again be validated and used, if another inode requests it as its sibling or parent. When a list of "good quality" inodes have been created, the actual recovery process starts. First the relationships between directories are recovered. Then the names of all files and directories. The parent relation for each file is also recovered during this process. Then the directory structure are recreated. The next step is recovery of all inodes. Inodes recovers depending on their type. Directory inodes only sets their own dates. File inodes saves the file data, and sets its dates. Symlinks and special inodes is not taken care of yet. Needless to say, this process is quite time consuming. What it cannot do (yet): - Handle non-ASCII filenames correctly. Filenames are UTF8-encoded, but the filename is truncated. - Handle multiple versions of the same filename (but with different inode number) - Handle symlinks and special inodes. It still prints a lot of debug messages thats irrelevant to non-developers. Obtaining it: Checkout the source code from the svn repository: svn co https://svn.sourceforge.net/svnroot/jfsrec jfsrec ./configure && make The boost libraries filesystem, program_options as well as regex, are required. Get them from boost.org, or via your favorite package manager. How it came to be: One day my boot loader stopped working. So I had to boot my computer using an Ubuntu boot CD. When I tried to fix the boot loader I needed a little more disk space than the ram disk had, so I decided to format the swap partition. Unfortunately, the device numbering on the boot CD was not the same as on my installation. That lead to the fatal mistake, the /dev/md2 I formatted, which was the swap space on my installation, was the same as /dev/md3 on my installation, which was the root partition. I did not find any commercial or open tools to try, but I found some interesting mails on this mailing list and the idea was born... Best wishes, Simon Lundell |