diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java
index 4874d641e4612450bccc98613df05ece1d94d336..c1e52233fa8c74f8b11ff77b4c380899ab64a2a2 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java
@@ -3,6 +3,8 @@ package de.deadlocker8.budgetmaster.backup;
 import de.deadlocker8.budgetmaster.database.DatabaseService;
 import de.deadlocker8.budgetmaster.settings.Settings;
 import de.deadlocker8.budgetmaster.settings.SettingsService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.event.ContextRefreshedEvent;
 import org.springframework.context.event.EventListener;
@@ -21,6 +23,8 @@ import java.util.concurrent.ScheduledFuture;
 @Service
 public class BackupService
 {
+	private final Logger LOGGER = LoggerFactory.getLogger(BackupService.class);
+
 	private final SettingsService settingsService;
 	private final DatabaseService databaseService;
 
@@ -113,4 +117,10 @@ public class BackupService
 
 		return BackupStatus.UNKNOWN;
 	}
+
+	public void runNow()
+	{
+		LOGGER.debug("Backup triggered manually");
+		backupTask.run();
+	}
 }
\ No newline at end of file
diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
index 4d19aff8b34ea56403ef51bb13465ab375e3667c..b03c5b032d3284ee0337e09a368672f223e9899f 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
@@ -93,7 +93,8 @@ public class SettingsController extends BaseController
 					   @RequestParam(value = "password") String password,
 					   @RequestParam(value = "passwordConfirmation") String passwordConfirmation,
 					   @RequestParam(value = "languageType") String languageType,
-					   @RequestParam(value = "autoBackupStrategyType", required = false) String autoBackupStrategyType)
+					   @RequestParam(value = "autoBackupStrategyType", required = false) String autoBackupStrategyType,
+					   @RequestParam(value = "runBackup", required = false) Boolean runBackup)
 	{
 		settings.setLanguage(LanguageType.fromName(languageType));
 		if(autoBackupStrategyType == null)
@@ -130,10 +131,35 @@ public class SettingsController extends BaseController
 
 		updateSettings(settings);
 
+		runBackup(request, runBackup);
+
 		WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.settings.saved"), NotificationType.SUCCESS));
 		return "redirect:/settings";
 	}
 
+	private void runBackup(WebRequest request, Boolean runBackup)
+	{
+		if(runBackup == null)
+		{
+			return;
+		}
+
+		if(runBackup)
+		{
+			backupService.runNow();
+
+			BackupStatus backupStatus = backupService.getBackupStatus();
+			if(backupStatus == BackupStatus.OK)
+			{
+				WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.settings.backup.run.success"), NotificationType.SUCCESS));
+			}
+			else
+			{
+				WebRequestUtils.putNotification(request, new Notification(Localization.getString("notification.settings.backup.run.error"), NotificationType.ERROR));
+			}
+		}
+	}
+
 	private void fillMissingFieldsWithDefaults(Settings settings)
 	{
 		if(settings.getBackupReminderActivated() == null)
diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties
index dcb8c3e4a0eca04ee45c71d2f983e8b6320e385e..20d448619f49ab9815979fa9b0b365e9c2b374e1 100644
--- a/src/main/resources/languages/base_de.properties
+++ b/src/main/resources/languages/base_de.properties
@@ -142,6 +142,8 @@ info.button.backup.reminder=Zu den Einstellungen
 notification.settings.saved=Einstellungen gespeichert
 notification.settings.update.available=BudgetMaster Update "{0}" verfügbar
 notification.settings.database.delete.success=Datenbank erfolgreich gelöscht
+notification.settings.backup.run.success=Backup erfolgreich
+notification.settings.backup.run.error=Backup fehlgeschlagen
 upload.image.success=Erfolgreich hochgeladen
 upload.image.error=Fehler: {0}
 upload.image.error.no.file=Fehler: Keine Datei für Upload angegeben
@@ -256,6 +258,7 @@ settings.backup.auto.git.token=Git Zugriffstoken
 settings.backup.auto.git.test=Verbindung testen
 settings.backup.auto.git.test.success=Verbindung erfolgreich!
 settings.backup.auto.git.test.fail=Verbindung fehlgeschlagen!\n{0}
+settings.backup.auto.run.now=Jetzt ausführen
 settings.category.circle.style=Kategorien anzeigen als
 settings.category.circle.style.description=Legt die Darstellung von Kategorien in der Buchungsübersicht fest
 settings.category.circle.style.deactivated=Quadrate
diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties
index d174a1568361c1cfbda3166cd2b2ed98791ab719..fee073554594d79783d7f516fbe6c9f5ef183b53 100644
--- a/src/main/resources/languages/base_en.properties
+++ b/src/main/resources/languages/base_en.properties
@@ -142,6 +142,8 @@ info.button.backup.reminder=To the settings
 notification.settings.saved=Settings saved
 notification.settings.update.available=BudgetMaster update "{0}" available
 notification.settings.database.delete.success=Successfully deleted database
+notification.settings.backup.run.success=Backup successful
+notification.settings.backup.run.error=Backup failed
 upload.image.success=Upload successful
 upload.image.error=Error: {0}
 upload.image.error.no.file=Error: No file provided for upload
@@ -256,6 +258,7 @@ settings.backup.auto.git.token=Git access token
 settings.backup.auto.git.test=Test connection
 settings.backup.auto.git.test.success=Connection successful!
 settings.backup.auto.git.test.fail=Connection failed!\n{0}
+settings.backup.auto.run.now=Run now
 settings.category.circle.style=Show categories as
 settings.category.circle.style.description=Defines how categories are displayed in the transaction overview
 settings.category.circle.style.deactivated=Squares
diff --git a/src/main/resources/static/js/settings.js b/src/main/resources/static/js/settings.js
index 31b8e205a14b59e7b9a7ff15873ff8ffe80e4211..ba1246cc5eb7052b4bcfd8210c62067332745902 100644
--- a/src/main/resources/static/js/settings.js
+++ b/src/main/resources/static/js/settings.js
@@ -71,6 +71,11 @@ $(document).ready(function()
         });
     }
 
+    $('#settings-backup-run-now').click(function()
+    {
+        document.getElementById('runBackupInput').value = 1;
+    });
+
     // on initial page load
     let autoBackupCheckbox = document.getElementsByName("autoBackupActivated")[0];
     $('#settings-auto-backup').toggle(autoBackupCheckbox.checked);
diff --git a/src/main/resources/templates/settings/settingsMacros.ftl b/src/main/resources/templates/settings/settingsMacros.ftl
index 6b86afb17a4bea7c6395c0f95975dbe819b2b4d4..b977593d6b9d0cd57196d3923d8eed362fc6c6d4 100644
--- a/src/main/resources/templates/settings/settingsMacros.ftl
+++ b/src/main/resources/templates/settings/settingsMacros.ftl
@@ -282,4 +282,10 @@
             <a target="_blank" href="${locale.getString("settings.backup.auto.strategy.git.remote.help.url")}" class="waves-effect waves-light btn btn-flat text-default"><i class="material-icons left">help_outline</i>${locale.getString("settings.backup.auto.strategy.git.remote.help")}</a>
         </div>
     </div>
+    <div class="row">
+        <div class="col s12 m12 l8 offset-l2 center-align">
+            <input id="runBackupInput" type="hidden" name="runBackup" value="0">
+            <@header.buttonSubmit id='settings-backup-run-now' name='action' icon='cloud_download' localizationKey='settings.backup.auto.run.now'/>
+        </div>
+    </div>
 </#macro>
\ No newline at end of file