diff --git a/app/controllers/admin/backups_controller.rb b/app/controllers/admin/backups_controller.rb index 3eb3f62772..c49b6aeeb8 100644 --- a/app/controllers/admin/backups_controller.rb +++ b/app/controllers/admin/backups_controller.rb @@ -215,7 +215,7 @@ class Admin::BackupsController < Admin::AdminController private def has_enough_space_on_disk?(size) - `df -Pk #{Rails.root}/public/backups | awk 'NR==2 {printf "%.0f", $4 * 1024;}'`.to_i > size + DiskSpace.free("#{Rails.root}/public/backups") > size end def ensure_backups_enabled diff --git a/lib/cooked_post_processor.rb b/lib/cooked_post_processor.rb index 9846c9e0bb..3d85718fb5 100644 --- a/lib/cooked_post_processor.rb +++ b/lib/cooked_post_processor.rb @@ -685,7 +685,7 @@ class CookedPostProcessor end def available_disk_space - 100 - `df -P #{Rails.root}/public/uploads | tail -1 | tr -s ' ' | cut -d ' ' -f 5`.to_i + 100 - DiskSpace.percent_free("#{Rails.root}/public/uploads") end def dirty? diff --git a/lib/disk_space.rb b/lib/disk_space.rb index 96121b0cc7..f3cfd25612 100644 --- a/lib/disk_space.rb +++ b/lib/disk_space.rb @@ -12,11 +12,19 @@ class DiskSpace end def self.free(path) - `df -Pk #{path} | awk 'NR==2 {print $4;}'`.to_i * 1024 + output = Discourse::Utils.execute_command('df', '-Pk', path) + size_line = output.split("\n")[1] + size_line.split(/\s+/)[3].to_i * 1024 + end + + def self.percent_free(path) + output = Discourse::Utils.execute_command('df', '-P', path) + size_line = output.split("\n")[1] + size_line.split(/\s+/)[4].to_i end def self.used(path) - `du -s #{path}`.to_i * 1024 + Discourse::Utils.execute_command("du", "-s", path).to_i * 1024 end def self.uploads_path