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 Me gusta

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 Me gusta

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 Me gusta

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

1 me gusta

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

4 Me gusta

Lo intenté en mi Discourse, pero obtuve el siguiente error:

/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 en postgresql_connection': FATAL: Falló la autenticación peer para el usuario "discourse" (ActiveRecord::NoDatabaseError)

Por cierto, el script ahora se ha actualizado para gestionar también las cargas almacenadas en S3.

6 Me gusta