diff --git a/roles/base/tasks/backup_dataset.yml b/roles/base/tasks/backup_dataset.yml
index 24c3116807ff40ff4b0ac77130b8d549ab219be2..2bd888c12d5d939f0e6b4c0bedc997f6a0bd99e6 100644
--- a/roles/base/tasks/backup_dataset.yml
+++ b/roles/base/tasks/backup_dataset.yml
@@ -11,7 +11,10 @@
     dataset_owner: "{{ item.1.get('owner', '') }}"
     dataset_path: "{{ item.1.get('path', '') }}"
     dataset_type: "{% if 'backup_command' in item.1 %}pipe{% else %}file{% endif %}"
-    dataset_should_backup: "{{ (item.0.name in float_enabled_services) and (not item.1.get('sharded', False)) and ((not item.1.get('on_master_only', False)) or (item.0.get('master_host') == inventory_hostname)) }}"
+    dataset_should_backup: "{{ (item.0.name in float_enabled_services) and ((not item.1.get('on_master_only', False)) or (item.0.get('master_host') == inventory_hostname)) }}"
+
+- set_fact:
+    dataset_should_restore: "{{ dataset_should_backup and not item.1.get('sharded', False) }}"
 
 - name: Set up configuration for dataset {{ dataset.name }} (source)
   template:
@@ -47,20 +50,28 @@
     src: "tabacco/restore-script.j2"
     dest: "/usr/lib/float/datasets/restore-{{ dataset_filename }}"
     mode: 0755
-  when: dataset_should_backup
+  when: dataset_should_restore
 
 - name: Create restore service unit
   template:
     src: "tabacco/restore-service.j2"
     dest: "/etc/systemd/system/restore-{{ dataset_filename }}.service"
     mode: 0444
-  when: dataset_should_backup
+  when: dataset_should_restore
+
+- name: Cleanup restore service unit
+  file:
+    path: "/etc/systemd/system/restore-{{ dataset_filename }}.service"
+    state: absent
+  when: "not dataset_should_restore"
+  notify: reload systemd
 
 - name: Enable restore service unit
   systemd:
     name: "restore-{{ dataset_filename }}.service"
     enabled: yes
   when: dataset_should_backup
+  notify: reload systemd
 
 - name: Wipe dataset restore guard file
   file: