What backup strategy do you use for your code?

My strategy is always check in, and backup the entire repository.

I never leave anything out of source control and I make sure regular backups (incremental daily, full weekly and monthly rotation) are happening and are functional.


OSX's Time Machine


(In addition to source control to a remote server) I use the free version of SyncBack (www.2brightsparks.com) and this batch file: (where the arguments to syncback.exe specify previously configured syncback backup profiles)

@echo off

echo Stop and start SQL Server
echo -------------------------

net stop "SQL Server (SQLEXPRESS)"
net stop "SQL Server (SQLSERVER2008)"
echo -----------------------------------------------------------
echo Back up running now... please wait.

"C:\Program Files\2BrightSparks\SyncBack\SyncBack.exe" c e-contents f-contents

echo Backing up done. Starting SQL Server...
echo -----------------------------------------------------------

net start "SQL Server (SQLEXPRESS)"
net start "SQL Server (SQLSERVER2008)"

echo -----------------------------------------------------------
echo Back up is done and SQL Server is running now.
echo -----------------------------------------------------------

pause

with two 8gb flash drives every day. At the end of the week, I do the same thing but then target a desktop external drive.

SyncBack is great!


At the end of the day I check my code into source control.

At around midnight Mozy kicks on and backs up my code off site.

At around 1AM the SC box gets backed up to tape.

At around 3AM Syncback SE wakes up and backs up my code to an external HD.

Throughout the day my work box syncs with my home box using Live Sync