diff --git a/src/Model/Study.py b/src/Model/Study.py
index 32893e3648f725a253d75f9c68af12e953a8b04e..a732cb862fb18a6ee03c7d2db5be56613705f4a3 100644
--- a/src/Model/Study.py
+++ b/src/Model/Study.py
@@ -1,6 +1,7 @@
 # -*- coding: utf-8 -*-
 
 import os
+import shutil
 from datetime import datetime
 
 from Model.DB import SQLModel
@@ -41,6 +42,8 @@ class Study(SQLModel):
         else:
             self._init_db_file(filename, is_new = False)
 
+        self._old_save_id = 0
+
     @classmethod
     def checkers(cls):
         lst = [
@@ -62,9 +65,27 @@ class Study(SQLModel):
         return self.status.is_saved()
 
     def save(self):
+        # Save a copy of database
+        fdir, fname = os.path.split(self.filename)
+
+        if self._old_save_id == 0:
+            try:
+                os.makedirs(os.path.join(fdir, "__old__"))
+            except FileExistsError as e:
+                shutil.rmtree(os.path.join(fdir, "__old__"))
+                os.makedirs(os.path.join(fdir, "__old__"))
+            except Exception as e:
+                print(e)
+
+        fname = fname + "." + str(self._old_save_id)
+        filename = os.path.join(fdir, "__old__", fname)
+        shutil.copy(self.filename, filename)
+        self._old_save_id += 1
+
+        # Save
         self.last_save_date = datetime.now()
-        self.status.save()
         self._save()
+        self.status.save()
 
     @property
     def name(self):