One thing to suggest - which has saved me a ton of times. Have a backup strategy in place while you are tinkering around. Here is what I do (below folder structure):
My web root is the projects folder. I have the folder _installations where I store what I download from different vendors (xenForo is one of them). This is a safeguard just in case something goes wrong and I have to use a fresh installation. It saves me from re-downloading the product.
The niden.net folder is the one that I am currently working on. Of course the live is whatever is live and the devX are the development folders, areas where I play. I might have two/three different dev folders trying different things. I always want to do one small thing at a time, test it that it works and then propagate it to a semi-finished state until I finish the next little building block. This way I can easily revert to a previous state and I find bugs easier (along with writing tests but let's not get there for the time being).
Finally I have the _backup folder which holds a mirror of the niden.net folder (and other site folders that I work on). A cron task performs a copy from the niden.net folder to the _backup/niden.net folder every hour. This is what I call the poor man's SVN. If something goes wrong and you have edited the wrong file, you can easily go back 1 hour without having to revert to the installation files. You can set that up as a batch file and a scheduled task in Windows - not sure about the process in Mac computers but I am sure it is similar to setting a cron task.
Other alternatives to keeping your work intact is to use services Google Code, Github, Assembla etc. and check in/out your changes to the source version control software.