diff --git a/CHANGELOG b/CHANGELOG
index d16f20266cb715a58b0e4b47b0768c15b8b00aa9..3c3ebd894b59cfa1e334c7b1c145aeff49616a97 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -27,6 +27,7 @@ v 7.10.0 (unreleased)
   - Passing the name of pushed ref to CI service (requires GitLab CI 7.9+)
   - Add location field to user profile
   - Fix print view for markdown files and wiki pages
+  - Fix errors when deleting old backups
   - Improve GitLab performance when working with git repositories
   - Add tag message and last commit to tag hook (Kamil Trzciński)
   - Restrict permissions on backup files
diff --git a/lib/backup/manager.rb b/lib/backup/manager.rb
index c6087830b40db384111681d41e657036666d495e..afd05897509f97864b859b65fe841402e2b0d1bc 100644
--- a/lib/backup/manager.rb
+++ b/lib/backup/manager.rb
@@ -70,16 +70,17 @@ module Backup
       # delete backups
       $progress.print "Deleting old backups ... "
       keep_time = Gitlab.config.backup.keep_time.to_i
-      path = Gitlab.config.backup.path
 
       if keep_time > 0
         removed = 0
-        file_list = Dir.glob(Rails.root.join(path, "*_gitlab_backup.tar"))
-        file_list.map! { |f| $1.to_i if f =~ /(\d+)_gitlab_backup.tar/ }
-        file_list.sort.each do |timestamp|
-          if Time.at(timestamp) < (Time.now - keep_time)
-            if Kernel.system(*%W(rm #{timestamp}_gitlab_backup.tar))
-              removed += 1
+        Dir.chdir(Gitlab.config.backup.path) do
+          file_list = Dir.glob('*_gitlab_backup.tar')
+          file_list.map! { |f| $1.to_i if f =~ /(\d+)_gitlab_backup.tar/ }
+          file_list.sort.each do |timestamp|
+            if Time.at(timestamp) < (Time.now - keep_time)
+              if Kernel.system(*%W(rm #{timestamp}_gitlab_backup.tar))
+                removed += 1
+              end
             end
           end
         end