diff --git a/sickbeard/config.py b/sickbeard/config.py
index 4daf58b3ac8f9e2166dd45b39cfb12a798ca5479..9ecc3a12ac187ffbba4687c45f9601925d9bc77b 100644
--- a/sickbeard/config.py
+++ b/sickbeard/config.py
@@ -16,8 +16,6 @@
 # You should have received a copy of the GNU General Public License
 # along with Sick Beard.  If not, see <http://www.gnu.org/licenses/>.
 
-
-
 import cherrypy
 import os.path
 import datetime
@@ -274,6 +272,8 @@ class ConfigMigrator():
             else:
                 migration_name = ''
             
+            helpers.backupVersionedFile(sickbeard.CONFIG_FILE, next_version)
+            
             # do the migration, expect a method named _migrate_v<num>
             logger.log(u"Migrating config up to version "+str(next_version)+migration_name)
             getattr(self, '_migrate_v'+str(next_version))()
diff --git a/sickbeard/databases/mainDB.py b/sickbeard/databases/mainDB.py
index 9595846a639e89a46b8d9cf87a02dc562a9bb2ad..649b55ded13e326163179dd0938cc8205d74d714 100644
--- a/sickbeard/databases/mainDB.py
+++ b/sickbeard/databases/mainDB.py
@@ -17,15 +17,12 @@
 # along with Sick Beard.  If not, see <http://www.gnu.org/licenses/>.
 
 import sickbeard
-import shutil, time, os.path, sys
+import os.path
 
-from sickbeard import db
-from sickbeard import common
-from sickbeard import logger
+from sickbeard import db, common, helpers, logger
 from sickbeard.providers.generic import GenericProvider
 
 from sickbeard import encodingKludge as ek
-from sickbeard.exceptions import ex
 from sickbeard.name_parser.parser import NameParser, InvalidNameException 
 
 class MainSanityCheck(db.DBSanityCheck):
@@ -52,6 +49,9 @@ class MainSanityCheck(db.DBSanityCheck):
         else:
             logger.log(u"No duplicate episode, check passed")
         
+def backupDatabase(version):
+    helpers.backupVersionedFile(db.dbFilename(), version)
+
 # ======================
 # = Main DB Migrations =
 # ======================
@@ -130,25 +130,7 @@ class NewQualitySettings (NumericProviders):
 
     def execute(self):
 
-        numTries = 0
-        while not ek.ek(os.path.isfile, db.dbFilename(suffix='v0')):
-            if not ek.ek(os.path.isfile, db.dbFilename()):
-                break
-
-            try:
-                logger.log(u"Attempting to back up your sickbeard.db file before migration...")
-                shutil.copy(db.dbFilename(), db.dbFilename(suffix='v0'))
-                logger.log(u"Done backup, proceeding with migration.")
-                break
-            except Exception, e:
-                logger.log(u"Error while trying to back up your sickbeard.db: "+ex(e))
-                numTries += 1
-                time.sleep(1)
-                logger.log(u"Trying again.")
-
-            if numTries >= 10:
-                logger.log(u"Unable to back up your sickbeard.db file, please do it manually.")
-                sys.exit(1)
+        backupDatabase(0)
 
         # old stuff that's been removed from common but we need it to upgrade
         HD = 1
@@ -406,6 +388,8 @@ class AddSizeAndSceneNameFields(FixAirByDateSetting):
     
     def execute(self):
 
+        backupDatabase(10)
+
         if not self.hasColumn("tv_episodes", "file_size"):
             self.addColumn("tv_episodes", "file_size")
 
diff --git a/sickbeard/helpers.py b/sickbeard/helpers.py
index 1f72025c1d03d5d2a0077a54340f3475d5c31c2d..b385059570ebe3bb9572d89f39dcb62dd682e035 100644
--- a/sickbeard/helpers.py
+++ b/sickbeard/helpers.py
@@ -16,7 +16,6 @@
 # You should have received a copy of the GNU General Public License
 # along with Sick Beard.  If not, see <http://www.gnu.org/licenses/>.
 
-
 import StringIO, zlib, gzip
 import os
 import stat
@@ -24,6 +23,7 @@ import urllib, urllib2
 import re, socket
 import shutil
 import traceback
+import time, sys
 
 from xml.dom.minidom import Node
 
@@ -633,3 +633,27 @@ def get_xml_text(node):
         if child_node.nodeType in (Node.CDATA_SECTION_NODE, Node.TEXT_NODE):
             text += child_node.data
     return text.strip()
+
+def backupVersionedFile(oldFile, version):
+    numTries = 0
+    
+    newFile = oldFile + '.' + 'v'+str(version)
+    
+    while not ek.ek(os.path.isfile, newFile):
+        if not ek.ek(os.path.isfile, oldFile):
+            break
+
+        try:
+            logger.log(u"Attempting to back up "+oldFile+" before migration...")
+            shutil.copy(oldFile, newFile)
+            logger.log(u"Done backup, proceeding with migration.")
+            break
+        except Exception, e:
+            logger.log(u"Error while trying to back up "+oldFile+": "+ex(e))
+            numTries += 1
+            time.sleep(1)
+            logger.log(u"Trying again.")
+
+        if numTries >= 10:
+            logger.log(u"Unable to back up "+oldFile+", please do it manually.")
+            sys.exit(1)