Regarding undoing the effects of rm:
Given that most filesystems only remove the reference to the data and indicate that the blocks as free, you could try to locate your data reading directly from the device. With a bit of luck the blocks containing your file(s) haven't been claimed for something else.
This assumes you have something fairly unique to look for, that you have root on the system and I'm guessing piecing together anything that spans more than one filesysteme block (probably 4k) might end up quite laborious if the filesystem didn't manage to put the file(s) in contiguous blocks.
I have successfully recovered the contents of a couple of plain-text files by running strings on the device the filesystem was on, and using grep looking for something from those files with a large context (-C). (And shortly after that incident, the company decided to spend some resources on implementing backups)