I had to do something similar last night, when I managed to make my 16gb CF unbootable, fortunately i had my 4gb I was using until about 1 month ago :-
1) Attached 4gb microdrive to laptop using USB adapter, checked the filesystem (just to be safe).
2) Mount 4gb microdrive (/media/disk in this case)
3) cd /media/disk
4) copy contents to laptop HD (I wanted a) a backup
a fast way to redo the process if I messed up)
find . | cpio -pdmv /home/andy/z/cf_recovery
5) wait .......
6) once the copy was complete umount /media/disk
7) Disassemble Z (c3100 in my case)
9) Retrieve CF card from Z, attach to lappy via USB.
10) It automounted on /media/disk, so I unmounted it.
11) Create an ext2 filesystem (yes I want ext3 journaling, but i am going to dump a lot of data in a stable environment so I don't need the journal - it would only slow things down).
tune2fs -i 0 -c 0 /dev/hda1
(turns off fsck after a number of mounts).
12) mount the cf card (mount /dev/hdb1 /media/disk)
13) cd /home/andy/z/cf_recovery
13) find . | cpio -pdmv /media/disk
14) wait .....
15) umount cf card, insert in Z, rebuild Z - hey presto - working fs
BTW. If you need to repeat step 13) for any reason either remake the filesystem or add the 'u' flag (unconditional overwrite) to the cpio.
Hope this helps
(Then I did an apt-get update ; apt-get upgrade )