Is there a tool to save a snapshot terminal session for later recovery, like a virtual machine? I work on multiple projects with multiple type of servers required, and when I switch project I shut down any of the applications and start the ones I need at that moment from the terminal. 

I considered using a VM to switch project, but I was wondering if there was a way to save my terminal session (a snaphshot) for later use.
Have you tried using screen ?

With screen you can disconnect from the terminal and then reconnect to it later.