diff --git a/CHANGELOG b/CHANGELOG
index 3006ff4049da2d4cbcb825fc4b0b9ace44a88546..2e02d5ad20d0c3dce2a9e1fc999c5b22d7656f5c 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -5,6 +5,7 @@ v 7.4.0
   - Refactor test coverage tools usage. Use SIMPLECOV=true to generate it locally
   - Increase unicorn timeout to 60 seconds
   - Sort search autocomplete projects by stars count so most popular go first
+  - Do not delete tmp/repositories itself during clean-up, only its contents
 
 v 7.3.1
   - Fix ref parsing in Gitlab::GitAccess
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 4108c4ee96ebc03be4e4fa3f053a92d82f79a52c..ed220ae2e8d1f50d6d93f0067be7ba8486d59916 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -230,7 +230,8 @@ class Repository
 
   # Remove archives older than 2 hours
   def clean_old_archives
-    Gitlab::Popen.popen(%W(find #{Gitlab.config.gitlab.repository_downloads_path} -mmin +120 -delete))
+    repository_downloads_path = Gitlab.config.gitlab.repository_downloads_path
+    Gitlab::Popen.popen(%W(find #{repository_downloads_path} -not -path #{repository_downloads_path} -mmin +120 -delete))
   end
 
   def branches_sorted_by(value)