Would it be worth resizing uploaded images (to save space)?

I’d love to know if you had any success here?
Our install is nearly 3 years old now and the server is showing 27GB used (after running cleanup). There’s quite a lot of photo uploading, often straight from phones, which means lots of multi-MB image files building up.

I’d love to be able to shrink all >1 year old images to something decent but sane, to claw some precious space back.

6 个赞

I believe @neil has some code we used to do this a few times, but it was focused on older versions of Discourse where inappropriately large .png images would sometimes get saved instead of smaller .jpg images.

3 个赞

The script is downsize_uploads.rb. Run it like so:

cd /var/www/discourse
RAILS_ENV=production bundle exec ruby script/downsize_uploads.rb

It will try to downsize images to be 1 megapixel or less, or you can pass in the max size you want.

The script doesn’t scope it like that, but you can easily edit the script to do so. Add .where('created_at < ?, 1.year.ago) to the query on line 10.

9 个赞

@neil Could this be used for S3 image uploads as well?

1 个赞

That script only works if you store the images locally. It would need to be updated to support images stored externally.

4 个赞

我在 Discourse 上尝试了此操作,但出现以下错误

/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:50:in rescue in postgresql_connection’: FATAL: 用户 “discourse” 的 Peer 认证失败 (ActiveRecord::NoDatabaseError)`

附注:脚本现已更新,可处理存储于 S3 的上传文件。

6 个赞