Loading...
+7 (926)878-29-28

Оптимизация изображений на сервере скриптом

Ставим софт:

#deb-based
apt-get install -y jpegoptim optipng
#rpm-based
yum install -y jpegoptim optipng

Засовываем это в файл optimages.sh:

#!/bin/bash
/usr/bin/find $1 -type f -iname '*.jpg' -exec /usr/bin/jpegoptim -q -f -o --strip-all {} \; >/dev/null 2>&1
/usr/bin/find $1 -type f -iname '*.png' -exec /usr/bin/optipng -quiet -o7 {} \; >/dev/null 2>&1

Запускаем:

./optimages.sh /var/www/user/site.com

Предварительно на всякий случай рекомендуется сделать бэкап всех изображений:
(каждый символ в команде очень важен!)

rsync -avh --include '*/' --include '*.jpg' --include '*.png'
--exclude '*' /var/www/user/site.com/ /var/backup/site-com-images/

Если вдруг понадобится откатить:
(ни в коем случае не терять завершающий слеш в путях!)

rsync -a /var/backup/site-com-images/ /var/www/user/site.com/

Если вдруг хочется запускать процедуру регулярно по расписанию для всех новых изображений, появившихся за последние пару часов, скрипт станет таким:

#!/bin/bash
/usr/bin/find $1 -type f -iname '*.jpg' -mmin -120 -exec /usr/bin/jpegoptim 
-q -f -o --strip-all {} \; >/dev/null 2>&1 /usr/bin/find $1 -type f -iname '*.png' -mmin -120 -exec /usr/bin/optipng
-quiet -o7 {} \; >/dev/null 2>&1

И в крон, на запуск каждые 2 часа:

#deb
echo '0 */2 * * * /root/optimages.sh /var/www/user/site.com' >> /var/spool/cron/crontabs/root
#centos
echo '0 */2 * * * /root/optimages.sh /var/www/user/site.com' >> /var/spool/cron/root

Если вдруг хочется залоггировать всё что сделал скрипт:

#!/bin/bash
/usr/bin/find $1 -type f -iname '*.jpg' -mmin -120 -exec /usr/bin/jpegoptim -f -o --strip-all {} \; 
>>/var/www/user/optimages.log 2>&1 /usr/bin/find $1 -type f -iname '*.png' -mmin -120 -exec /usr/bin/optipng -o7 {} \;
>>/var/www/user/optimages.log 2>&1