定期重新壓縮 jpeg 圖形檔

以下可以找到目錄底下所有七天內建立的 jpeg 檔案,然後用 GraphicsMagick 重新壓縮一次:

su -m nobody -c "find photos/ -type f -name '*.jpg' -newerct '7 day ago' -print -exec gm convert {} {} \;"

之前有一個 57G 的目錄,跑完剩下 27G,省下了 50% 的空間,我猜那個目錄底下的檔案,本來是用 PHP 的 GD 自己壓縮的,不過即是本來就是用 GraphicsMagick 處理的圖形檔,跑了之後,還是會變小。

實例:

[root@xxxx]/home/mini(112): ls -al ./attachment/201408/18/201856_1408357882fq1M.jpg.thumb.jpg
-rw-r--r--  1 nobody  nogroup  2129  8 18 18:31 ./attachment/201408/18/201856_1408357882fq1M.jpg.thumb.jpg
[root@club1069]/home/mini(113): gm convert ./attachment/201408/18/201856_1408357882fq1M.jpg.thumb.jpg ./attachment/201408/18/201856_1408357882fq1M.jpg.thumb.jpg
[root@xxxx]/home/mini(114): ls -al ./attachment/201408/18/201856_1408357882fq1M.jpg.thumb.jpg         
-rw-r--r--  1 nobody  nogroup  1816  8 18 19:26 ./attachment/201408/18/201856_1408357882fq1M.jpg.thumb.jpg

原先是 2129 bytes 的 jpeg 檔案,處理後,剩下 1816 bytes,將近 20%。

我猜是新版本的 GraphicsMagick,或許會有比較厲害的演算法,所以又可以省下一些空間,例如mozjpeg,號稱可以讓 jpeg 更小。