Ставим софт:
Код: #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 Полный пост и обсуждение скрипта для оптимизации картинок. Там же есть и ништяки для аналогичной массовой обработки картинок - зеркалирование или обрезка. Точно так же можно и массово менять размеры, масштабировать изображения прямо на сервере.