diff --git a/devshop_projects/devshop_projects.drush.inc b/devshop_projects/devshop_projects.drush.inc
index 848d3d1..add1198 100644
--- a/devshop_projects/devshop_projects.drush.inc
+++ b/devshop_projects/devshop_projects.drush.inc
@@ -48,12 +48,18 @@ function drush_devshop_projects_pre_hosting_task() {
   if ($task->ref->type == 'project' && $task->task_type == 'devshop-sync') {
     $task->args[] = $task->task_args['source'];
     $task->args[] = $task->task_args['destination'];
+    // DevShop specific options:
+    $task->options['pull'] = $task->task_args['pull'];
+    // The rest are for provision_sync:
     $task->options['database'] = $task->task_args['database'];
     $task->options['files'] = $task->task_args['files'];
-    $task->options['pull'] = $task->task_args['pull'];
-    $task->options['update'] = $task->task_args['update'];
-    $task->options['revert'] = $task->task_args['revert'];
-    $task->options['cache'] = $task->task_args['cache'];
+    $task->options['modules'] = $task->task_args['modules'];
+    $task->options['themes'] = $task->task_args['themes'];
+    $task->options['libraries'] = $task->task_args['libraries'];
+    $task->options['updatedb'] = $task->task_args['updatedb'];
+    $task->options['features-revert-all'] = $task->task_args['features_revert_all'];
+    $task->options['cache-clear'] = $task->task_args['cache_clear'];
+    $task->options['backup'] = $task->task_args['backup'];
   }
 
   // Download
@@ -285,6 +291,27 @@ function devshop_projects_post_hosting_verify_task($task, $data) {
 }
 
 /**
+ * Implements hook_hosting_TASK_NAME_task().
+ */
+function devshop_projects_post_hosting_devshop_sync_task($task, $data) {
+  if ($task->ref->type == 'project' && $task->task_args['backup']) {
+    $task = clone $task;
+
+    // Load the destination node
+    $project = $task->ref;
+    $destination = hosting_get_site_by_url($task->task_args['destination'] . '.' . $project->base_url);
+
+    // When sync'ing with provision_sync, it shows the source alias -- let's be consistent!
+    $source_alias = '@' . $task->task_args['source'] . '.' . $project->base_url;
+
+    // Record the backup created during sync.
+    $task->ref = $destination;
+    $task->task_args['description'] = t('Before sync from %source', array('%source' => $source_alias));
+    hosting_site_post_hosting_backup_task($task, $data);
+  }
+}
+
+/**
  * Implements hook_hosting_project_context_options()
  *
  * This transfers data from the node to thes aegir context object (the alias!)
diff --git a/devshop_projects/inc/tasks.inc b/devshop_projects/inc/tasks.inc
index b3f08e1..4705934 100644
--- a/devshop_projects/inc/tasks.inc
+++ b/devshop_projects/inc/tasks.inc
@@ -324,28 +324,42 @@ function hosting_task_devshop_sync_form($node) {
   $form['destination']['#prefix'] = '<div class="destination">';
   $form['destination']['#suffix'] = '</div></div>';
 
+  // What to sync?
   $form['database'] = array(
     '#title' => t('Copy database from source to destination.'),
     '#type' => 'checkbox',
     '#default_value' => 1,
-    '#prefix' => '<fieldset><legend>What to sync</legend>',
+    '#prefix' => '<fieldset><legend>' . t('What to sync?') . '</legend>',
   );
-
   $form['files'] = array(
-    '#title' => t('Copy files folder from source to destination.'),
+    '#title' => t('Copy files from source to destination.'),
+    '#type' => 'checkbox',
+    '#default_value' => 1,
+  );
+  $form['modules'] = array(
+    '#title' => t('Copy modules from source to destination.'),
+    '#type' => 'checkbox',
+    '#default_value' => 0,
+  );
+  $form['themes'] = array(
+    '#title' => t('Copy themes from source to destination.'),
+    '#type' => 'checkbox',
+    '#default_value' => 0,
+  );
+  $form['libraries'] = array(
+    '#title' => t('Copy libraries from source to destination.'),
     '#type' => 'checkbox',
     '#default_value' => 0,
     '#suffix' => '</fieldset>',
   );
 
-  
+  // Options
   $form['pull'] = array(
     '#title' => t('Pull code on Destination'),
     '#type' => 'checkbox',
     '#default_value' => 1,
-    '#prefix' => '<fieldset><legend>Actions</legend>',
   );
-  $form['update'] = array(
+  $form['updatedb'] = array(
     '#title' => t('Run update.php on Destination'),
     '#type' => 'checkbox',
     '#default_value' => 1,
@@ -367,12 +381,18 @@ function hosting_task_devshop_sync_form($node) {
     //  '#disabled' => TRUE,
     //  );
   }
-  $form['cache'] = array(
+  $form['cache_clear'] = array(
     '#title' => t('Clear cache on Destination'),
     '#type' => 'checkbox',
     '#default_value' => 1,
-    '#suffix' => '</fieldset>',
   );
+  $form['backup'] = array(
+    '#title' => t('Create backup on Destination'),
+    '#type' => 'checkbox',
+    '#description' => t('If this option is enabled, a backup of the destination will be created before any changes are made. <em>This is will allow you to restore later in case this was a mistake!</em>'),
+    '#default_value' => 1,
+  );
+  
   $form['#validate'][] = 'hosting_task_devshop_sync_form_validate';
   return $form;
 }
