diff --git a/includes/destinations.file.inc b/includes/destinations.file.inc
index e4562db..4cc7e93 100644
--- a/includes/destinations.file.inc
+++ b/includes/destinations.file.inc
@@ -93,7 +93,7 @@ class backup_migrate_destination_files extends backup_migrate_destination {
   /**
    * File delete destination callback.
    */
-  function delete_file($file_id) {
+  function _delete_file($file_id) {
     $filepath = $this->get_filepath($file_id);
     file_unmanaged_delete($filepath);
   }
diff --git a/includes/destinations.inc b/includes/destinations.inc
index 513248f..d52ba0d 100644
--- a/includes/destinations.inc
+++ b/includes/destinations.inc
@@ -236,7 +236,7 @@ function backup_migrate_destination_save_file($file, &$settings) {
  */
 function backup_migrate_destination_delete_file($destination_id, $file_id) {
   if ($destination = backup_migrate_get_destination($destination_id)) {
-    return $destination->delete_file($file_id);
+    return $destination->delete_file($file_id, TRUE);
   }
 }
 
@@ -714,10 +714,16 @@ class backup_migrate_destination extends backup_migrate_item {
 
   /**
    * Delete the file with the given destination specific id.
+   *
+   * Pass TRUE for $remove_info to try and delete the associated
+   * .info file.
    */
-  function delete_file($file_id) {
+  function delete_file($file_id, $remove_info = FALSE) {
     $this->file_cache_clear();
     $this->_delete_file($file_id);
+    if ($remove_info) {
+      $this->_delete_file($file_id . '.info');
+    }
   }
 
   /**
