Try running this for autosaving your notebook at fixed periods. At least this way you will only lose a few minutes of work if you get another crash.
save=DynamicModule[{autosaveTime = 1, nb = EvaluationNotebook[]},
Row[{
"Autosave every", Spacer[5],
Row[{
InputField[Dynamic[autosaveTime], Number, FieldSize -> 1.5],
Spacer[3],
Grid[{
{Button["\[Wedge]",
Module[{autosaveTimex = autosaveTime}, autosaveTimex++;
autosaveTime = Max[1, autosaveTimex]],
Appearance -> "Palette", ContentPadding -> False,
FrameMargins -> 1, ImageMargins -> 0, ImageSize -> 20]},
{Button["\[Vee]",
Module[{autosaveTimex = autosaveTime}, autosaveTimex--;
autosaveTime = Max[1, autosaveTimex]],
Appearance -> "Palette", ContentPadding -> False,
FrameMargins -> 1, ImageMargins -> 0, ImageSize -> 20]}
},
Spacings -> {0, 0}], Spacer[3], "Min"}],
Spacer[15],
Button["Start Autosave",
Module[{autosave},
RemoveScheduledTask[ScheduledTasks[]];
autosave = CreateScheduledTask[{
NotebookSave[nb]
}, autosaveTime*60];
StartScheduledTask[autosave];
]],
Spacer[5],
Button["Stop Autosave",
RemoveScheduledTask[ScheduledTasks[]]
]
}]
]
You can also add it as a docked cell
SetOptions[EvaluationNotebook[],
DockedCells ->
Cell[BoxData[ToBoxes@save], Background -> Orange, CellMargins -> 0,
ShowStringCharacters -> False]]
