diff --git a/file_entity.pages.inc b/file_entity.pages.inc
index 17688fe..3171c46 100644
--- a/file_entity.pages.inc
+++ b/file_entity.pages.inc
@@ -1130,7 +1130,7 @@ function file_entity_upload_archive_form_submit($form, &$form_state) {
       $files = $archiver->listContents();
 
       $extract_dir = file_default_scheme() . '://' . pathinfo($archive->filename, PATHINFO_FILENAME);
-      $extract_dir = file_destination($extract_dir, FILE_EXISTS_RENAME);
+      $extract_dir = file_destination($extract_dir, FILE_EXISTS_REPLACE);
       if (!file_prepare_directory($extract_dir, FILE_MODIFY_PERMISSIONS | FILE_CREATE_DIRECTORY)) {
         throw new Exception(t('Unable to prepar, e directory %dir for extraction.', array('%dir' => $extract_dir)));
       }
@@ -1139,6 +1139,8 @@ function file_entity_upload_archive_form_submit($form, &$form_state) {
       $pattern = '/' . $form_state['values']['pattern'] . '/';
       if ($files = file_scan_directory($extract_dir, $pattern)) {
         foreach ($files as $file) {
+          if (file_exists($file->uri))
+            continue;
           $file->status = FILE_STATUS_PERMANENT;
           $file->uid = $archive->uid;
           file_save($file);
