Как оптимизировать изображения jepg и png в Linux?

Пакет: jpegoptim — утилита для оптимизации/сжатия файлов JPEG.

Jpegoptim может оптимизировать/сжимать файлы JPEG. Уменьшение размера без потерь основано на оптимизации таблиц Хафмана. Так называемое сжатие с потерями (компрессия) осуществляется повторным кодированием изображения, с указанным пользователем уровнем качества изображения.

Пакет: optipng — утилита оптимизации сжатия изображений PNG.

OptiPNG сжимает файлы PNG поочерёдно с разными параметрами и останавливается на параметрах, дающих минимальный размер. Для этого она пробует уменьшить глубину цвета (без потерь качества), изменить способ записи информации о цвете и палитру изображения. Также распознаются такие форматы как BMP, GIF, TIFF и PNM (PBM, PGM, PPM).

Установка jpegoptim и optipng в Debian или Ubuntu

sudo apt update -y && sudo apt install jpegoptim optipng -y

Оптимизация JPG

После установки в ОС пакетов выберите директорию с изображениями и запустите оптимизацию формата JPEG

cd /path/to/your/image/folder
find . -iname "*.jp*" -print0 | xargs -0 jpegoptim --strip-all -m76

Оптимизация PNG

find . -iname '*.png' -print0 | xargs -0 optipng -o7 -preserve

Как найти большие файлы в Linux?

Поиск файлов размером более 500 Мб по всей файловой системе:

nice find / -size +500M -exec ls -lhs {} \; 2>/dev/null

для удобства можно отсортировать файлы от большего к меньшему:

nice find / -size +500M -exec ls -lhs {} \; 2>/dev/null | sort -rh

Если у вас слишком много файлов, то можно ограничить вывод, например, до 5

nice find / -size +500M -exec ls -lhs {} \; 2>/dev/null | sort -rh | head -n5

Утилита du

Так же можно воспользоваться утилитой du (аббревиатура от англ. disk usage) — стандартная Unix-программа для оценки занимаемого файлового пространства.

Чтобы вывести список 10 самых больших файлов из директории /var воспользуйтесь решением ниже:

du -h /var | sort -nr | head -n10

По командам выше часть синтаксиса с реверсивной сортировкой и ограничением вывода вам известна. В примере я так же добавил параметр -h для того чтобы размер выводился в более читабельном, понятном виде, так как по умолчанию размер занимаемого пространства выводится в байтах.

Следующая команда распечатает 10 самых больших файлов в вашем текущем каталоге (т.е. в котором её запускаете):

du -ahx . | sort -rh | head -10

Тут я ещё добавил пару опций для удобно читаемого формата вывода.

Вот простой пример для минимального вывода корневых директорий текущего местоположения (вызова) и их занимаемый общий размер:

du -shc * | sort -hr
du

Как узнать информацию о процессоре на сервере под управлением Debian / Ubuntu?

Команда lscpu позволяет вывести информацию о процессорах, присутствующих в системе, включая количество процессоров, их архитектуру, производителя, семейство, модель и т. д. Для этого введите в командной строке:

lscpu

Вывод в консоли:

Команда lscpu

По сути утилита lscpu берёт информацию об архитектуре процессора из sysfs, /proc/cpuinfo и отображает в более удобном для пользователя виде.

Любопытства ради можно посмотреть этот файл указав в консоли следующее:

nano /proc/cpuinfo

Важно понимать, что полностью полагаться на эту информацию не стоит, так как иногда, в некоторых случаях, данные могут быть неверными.

Как копировать файлы между Linux-серверами при помощи утилиты rsync?

rsync — быстрая и гибкая программа, позволяющая копировать файлы на/с удалённых машин.

Программа широко используется для создания резервных копий и зеркал, а также в качестве улучшенной версии команды cp.

Задача: скопировать всю директорию (включая все файлы) размером более 50ГБ с удаленного сервера под управлением Debian/Ubuntu.

Решение: Воспользуемся утилитой rsync. Подробная информация.

Общий синтаксис команд достаточно простой.

rsync [ОПЦИИ...] ОТКУДА... [КУДА]
    Pull (получение):
        rsync [ОПЦИИ...] [USER@]HOST:ОТКУДА... [КУДА]
    Push (отправка):
        rsync [ОПЦИИ...] ОТКУДА... [USER@]HOST:КУДА

Следуя этим схемам давайте выполним нашу поставленную задачу.

  rsync --archive --verbose --progress -e "ssh -p 22888" root@00.000.00.000:/var/www/site/ ~/newsite/public_html

Данная команда скопирует всё содержимое директории /var/www/site/ удалённой машины в домашнюю директорию пользователя /newsite/public_html текущей машины (с которой осуществлялось подключение).

Данный пример рассматривает подключение по нестандартному ssh порту 22888 (по умолчанию 22-ой).

Опции:

  • —archive (можно сокращённо -a) команда для удобства объединяет в себе ряд других команда (равносильно -rlptgoD). То есть, утилита пройдёт рекурсивно по всем вложенным каталогам, перенесёт символические ссылки как символические ссылки ( -l ), сохранит изначальные права доступа к файлам ( -p ), сохранит время модификации ( -t ) и т.д.
  • —verbose вывод подробной информации о процессе синхронизации.
  • —progress показывать строку прогресса для синхронизации.
  • -e указывает удаленную оболочку для подключения (использования)

Рекомендация

При неуверенности запускайте в пробном режиме, при котором ничего не произойдёт, а только утилита продемонстрирует в консоли свою работу, но файлы скопированы не будут. Для этого нужно добавить опцию —dry-run

В таком случае наша консольная команда может выглядеть вот так:

sudo rsync --dry-run -azvv -e ssh /home/path/folder1/ ЮЗЕР@ХОСТ:/home/path/folder2

На что обратить внимание?

  1. Это закрывающие слэши. Закрывающий слэш означает «внутреннее содержимое». То есть, если в случае /var/www/site/ убрать закрывающий слэш /var/www/site то в итоге будет создана эта директория и мы получим немного неожиданный результат. Наши копируемые файлы окажутся вот тут /newsite/public_html/site
    • При этом, наличие или отсутствие закрывающего слэша в имени директории, в которую будет происходить копирование, значения не имеет. Важно обращать внимание на слэш источника.
  2. Это символы двоеточия при подключении к удалённым машинам.