Сегодня поговорим о том, как использовать команды Linux для выполнения наиболее распространенных преобразований для экономии места. Использование командной строки дает полный контроль над функциями сжатия и преобразования файлов. Кроме того, можно будет использовать командную строку, для написания скриптов, которые будут адаптированны к вашим потребностям.
Существует множество других способов сжатия и преобразования файлов. Можно установить приложение с графическим интерфейсом пользователя с открытым исходным кодом на свой компьютер или даже преобразовать форматы файлов, используя функции сохранения и экспорта многих распространенных приложений.
Удаление файлов
Прежде чем приступить к преобразованию формата файла, полезно определить и удалить все огромные, но ненужные файлы, которые есть на вашем компьютере. Удаление всего лишь горстки тяжелых файлов дает хорошую экономию места на диске.
Команды du, ncdu и dust выводят список самых больших подкаталогов в текущем каталоге. Они сообщают вам, какие каталоги используют больше всего дискового пространства:
$ du -a . | sort -n -r | head -n 50
Эта командная строка определяет 50 самых больших файлов в дереве каталогов. Самые большие файлы, отсортированные по размеру:
<span class="co4">$ </span><span class="kw2">find</span> <span class="re5">-type</span> f <span class="re5">-exec</span> <span class="kw2">du</span> <span class="re5">-Sh</span> <span class="br0">{</span><span class="br0">}</span> + <span class="sy0">|</span> <span class="kw2">sort</span> <span class="re5">-rh</span> <span class="sy0">|</span> <span class="kw2">head</span> <span class="re5">-n</span> <span class="nu0">50</span>
С помощью этой команды вы можете узнать где у вас есть большие файлы, хранящиеся более чем в одном месте. Удалите дубликаты, и вы сможете освободить достаточно места.
Качество или место на диске
Медиа-файлы, содержащие изображения, аудио и видео, могут использовать сотни различных форматов файлов. Часто приходится искать компромисс между качеством данных, с одной стороны, и занимаемым пространством для хранения, с другой.
Некоторые форматы файлов не содержат потерь: они сохраняют все изначально записанные данные. Форматы файлов без потерь могут быть как несжатыми, так и сжатыми. В зависимости от разных факторов их размеры могут отличаться.
Другие форматы файлов могут быть с потерями. Они экономят место для хранения, удаляя некоторые из наименее полезных данных. Они идеальны, если вы используете данные таким образом, что можете допустить небольшую потерю данных.
Например, при захвате цифрового изображения в формате без потерь, таком как RAW, PNG или BMP, создается большой файл. Преобразование этого изображения в альтернативу с потерями, такую как JPG или WEBP, позволяет сэкономить много места. Стоит ли оно того? Все зависит от того, как вы планируете использовать изображения.
Если вы профессиональный фотограф, который печатает фотографию в книге с высоким качеством, вы захотите сохранить исходный файл без потерь. Скорее всего, для ваших работ вам потребуется изображение самого высокого качества. Изображения без потерь можно редактировать без потери качества.
Если вы разработчик веб-сайтов, вы можете сделать выбор в сторону размера. Файлы JPG или WEBP меньшего размера с потерями загружаются на компьютеры пользователей намного быстрее, чем изображения без потерь, что ускоряет загрузку веб-страниц. Немногие пользователи могут сказать, является ли изображение, которое они просматривают на экране своего компьютера или мобильного телефона, без потерь или с потерями.
Помните, что после преобразования из формата без потерь в формат с потерями вы удалили некоторые данные. Вы не можете преобразовать файл обратно, чтобы восстановить эти данные. Вы можете преобразовать обратно в предыдущий формат, но сделаете это без данных, которыми вы уже пожертвовали. Удаляйте исходный файл только после того, как убедитесь, что преобразованный файл соответствует всем вашим потребностям! Вы можете вообще не удалять исходный файл.
Если по какой-либо причине для вас важны исходные несжатые файлы без потерь, сделайте их резервную копию на отдельном хранилище. Возможно, вам не нужен этот полнофункциональный WAV-файл на вашем рабочем компьютере каждый день, но вы будете иметь к нему доступ в будущем.
Преобразование файлов изображений
Одним из форматов для изображений является формат JPG с потерями. Благодаря настройкам качества JPG позволяет указать меньший размер файла с большей потерей данных или больший размер файла с меньшими потерями. Это может дать степень сжатия до 10: 1 по сравнению с некоторыми форматами без потерь. Тем не менее, если вы показываете изображение в формате JPG на экране компьютера или телефона, глаз редко может определить, что файл преобразован и сжат.
Файл WEBP выглядит на экранах так же хорошо, как и файлы JPG, но они экономят еще больше места. Благодаря этой экономии WEBP становится самым популярным форматом изображений с потерями, поддерживаемым всеми современными браузерами и самыми современными приложениями. Формат WEBP поддерживает альфа-прозрачность, анимацию и хорошую цветопередачу. Он почти всегда используется как формат с потерями, хотя может поддерживать формат без потерь.
Я преобразовал большинство моих файлов PNG и JPG в формат WEBP и освободил много места для хранения. На одном диске 500 мегабайт файлов PNG превратились примерно в 120 мегабайт WEBP. Если вы уверены, что ваши изображения будут просматриваться только на экране, преобразование в WEBP дает очевидные преимущества.
Утилита ImageMagick с открытым исходным кодом дает вам команды терминала Linux для преобразования изображений. Возможно ее нужно будет установить в системе:
$ sudo apt install imagemagick
Команды ImageMagick помогают уменьшить размер файла изображения с помощью трех методов:
- Изменение формата файла
- Изменение степени сжатия
- Изменения размера изображения
Вот синтаксис команды ImageMagick convert, которая выполняет преобразование формата файла:
convert <span class="br0">[</span>input options<span class="br0">]</span> input_file <span class="br0">[</span>output options<span class="br0">]</span> output_file
Все эти команды уменьшили размеры файлов. Результаты тестовых прогонов:
$ convert image.tiff new_image.jpg # 7.4MB down to 1.1MB
$ convert image.png new_image.webp # 4.8MB down to 515KB
$ convert image.png new_mage.webp # 1.5MB down to 560KB
$ convert image.jpg new_image.webp # 769KB down to 512KB
$ convert image.gif new_image.jpg # 13.2MB down to 10.9MB
$ convert image.gif new_image.webp # 13.2MB down to 4.1MB
Вы также можете конвертировать изображения RAW. При преобразовании изображения RAW его имя файла не должно иметь расширения, чтобы команда convert могла правильно обработать его.
<span class="co4">$ </span>convert image new_image.png <span class="co0"># RAW 67.1MB down to 45.3MB</span>
Можно получить значительную экономию места, но только если качество конвертированного изображения вам подходит.
В этом примере экономится место за счет изменения размера изображения JPG как можно ближе к 800×600 при сохранении правильного соотношения сторон. В этом примере я конвертирую входной файл размером 285 КБ с разрешением 1277×824 пикселей в выходной файл размером 51 КБ с разрешением 800×600 пикселей.
<span class="co4">$ </span>convert image.jpg <span class="re5">-resize</span> 800x600 new_image.jpg
Команда convert может изменять изображения, так как вам нравится. Например, вы можете подобрать компромисс между качеством и размером изображения. Но вам придется попробовать несколько вариантов настроек, чтобы понять все возможности. Чтобы узнать больше об ImageMagick, посетите веб-сайт ImageMagick.
Преобразование аудиофайлов
Как и файлы изображений, аудиофайлы бывают в несжатом без потерь, сжатом без потерь и сжатом с потерями форматах.
Компромисс между «без потерь» и «с потерями» заключается в первую очередь в качестве данных в сравнении с экономией места. Если вам нужен звук высочайшего качества, придерживайтесь файлов без потерь. Это может быть при редактировании оцифрованной музыки. Если вам нужна музыка для прослушиваемая, которая занимает гораздо меньше места, большая часть мира решила, что форматы с потерями, такие как MP3, M4A и OPUS, являются лучшим выбором.
Вот самые популярные аудиоформаты. Обратите внимание, что расширения файлов часто относятся к контейнерам, которые могут поддерживать более одного формата кодирования аудио, и что большинство технологий требуют более одного расширения файла. Ниже перечислены наиболее распространенные варианты:
- Без потери и сжатия
- WAV
- PCM
- AIFF
- Без потерь и сжатый
- FLAC
- ALAC
- Сжатый с потерями
- WEBM
- OPUS
- OGG (Vorbis)
- AAC (некоторые форматы не являются открытыми)
- MP3
- M4A
- WMA (не открытый формат)
Если ваша цель — сэкономить место на диске, попробуйте преобразовать формат без потерь в формат с потерями. Не конвертируйте из одного формата с потерями в другой без необходимости. Это слишком сильно ухудшит качество звука.
Очень гибкая команда терминала Linux для преобразования аудиофайлов — ffmpeg. Чтобы установить его:
<span class="co4">$ </span><span class="kw2">sudo</span> apt <span class="kw2">install</span> <span class="kw2">ffmpeg</span>
Как и команда ImageMagick convert, ffmpeg поддерживает огромное количество форматов файлов и кодеков. Просмотрите их все, введя:
<span class="co4">$ </span><span class="kw2">ffmpeg</span> <span class="re5">-encoders</span>
Использование ffmpeg довольно просто. Вот стандартный синтаксис. Флаг -i идентифицирует входной файл, а флаг -vn сообщает ffmpeg не вызывать какой-либо связи с видео кодом, который может изменить аудиовыход:
<span class="co4">$ </span><span class="kw2">ffmpeg</span> <span class="re5">-i</span> audiofile_input.ext <span class="re5">-vn</span> audiofile_output.new
Все эти примеры конвертируют файлы WAV без потерь в форматы с потерями для экономии места. Процесс преобразования файлов AIFF такой же (но замените .wav на .aiff):
$ ffmpeg -i audio.wav -vn audio.mp3 # 38.3MB to 3.5MB
$ ffmpeg -i audio.wav -vn audio.m4a # 38.3MB to 3.6MB
$ ffmpeg -i audio.wav -vn audio.webm # 38.3MB to 2.9MB
Все команды уменьшили размер входных файлов без потерь в 10 раз. Основной вопрос: на сколько звук на выходе отличается от оригинала? Для большинства людей, использующих бытовые устройства, разница незначительна. Вот почему MP3, M4A и другие сжатые форматы являются самыми популярными музыкальными форматами в мире. Несмотря на то, что технически это не лучший вариант, звук вполне приемлем для прослушивания и занимает небольшую часть дискового пространства (или полосы пропускания при потоковой передаче).
Конвертация видео файлов
Конвертация видео дает еще один шанс сэкономить много места. Ваша цель должна заключаться в том, чтобы найти видеоформат, который наилучшим образом сочетает в себе качество воспроизведения и размер файла в соответствии с вашими потребностями.
Видеоформат — это комбинация формата файла-контейнера и кодека. Кодек — это программное обеспечение, которое кодирует и декодирует поток данных при его перемещении в файл-контейнер и из него.
Контейнеры могут быть связаны с несколькими кодеками. На практике часто бывает только один, два или три популярных кодека в паре с конкретным контейнером. Например, с аудиофайлами файлы WAV могут быть закодированы как без потерь, так и с потерями, но кодирование без потерь преобладает над форматом, поэтому большинство людей считает, что любой файл WAV не содержит потерь.
Вот некоторые из наиболее широко используемых сегодня видеоформатов с открытым исходным кодом:
- Формат MP4, содержащий видео H.264 и аудио AAC, используется в потоковой передаче BluRay и в Интернете.
- Формат WEBM, содержащий видео VP9 и аудио Opus, чрезвычайно гибок и используется как для файлов архивного качества, так и для файлов меньшего размера для потоковой передачи.
- Формат контейнера Matroska (MKV) может содержать практически любую комбинацию видео, аудио и даже стереоскопических (3D) изображений. Это основа WEBM.
Основными факторами, определяющими размер и качество видеофайла, являются:
- Разрешение (размер кадра)
- Битрейт
- Способ кодирования
Команда ffmpeg может изменять все три параметра. Вот простой пример преобразования:
$ ffmpeg -i input_video.mov output.webm
Это преобразование привело к выходному файлу размером 1,8 МБ из входных 39 МБ.
Поскольку я не указал никаких параметров, ffmpeg копирует большинство существующих атрибутов файла-источника. В этом примере моим входным файлом был файл MOV, содержащий видео MJPEG с разрешением 1280×720, частотой кадров 23,98 и битрейтом 40 219 килобайт в секунду (кбит/с). Полученный выходной файл содержит видео VP9 с таким же разрешением и частотой кадров. Однако битрейт составляет всего 1893 кбит/с.
Будет ли качество полученного файла приемлемым для вас, зависит от использования видео, ваших устройств просмотра и ваших ожиданий. Никогда не удаляйте исходный файл, пока не проверите преобразованный файл и не сочтете его удовлетворительным.
Архивирование файлов
Архивирование берет несколько входных файлов — часто файлов разных типов — и собирает их в один выходной файл. Сжатие не является обязательным. Сжатый архив полезен для отправки файлов через Интернет и для длительного хранения данных. Это отличный способ сэкономить место. Обратной стороной является то, что вы ограничены в том, как вы можете обрабатывать заархивированные файлы, пока вы не извлечете их из архива (хотя некоторые инструменты теперь довольно гибки в своих манипуляциях с файлами в архивах).
Среди множества форматов архивных файлов наиболее популярными форматами сжатия являются GZ, BZ2, XZ, ZIP и 7Z. Команда tar работает со многими форматами архивов. Он поддерживает команды сжатия, включая gzip, bzip2, xz и другие.
$ tar --xz --create --file myarchive.tar.xz bigfile.xcf bigfile.tiff
Эта команда уменьшила 56 МБ до сжатого архива 28 МБ. Степень сжатия сильно зависит от используемых файлов. Некоторые медиафайлы (особенно те, которые уже находятся в сжатом формате) сжимаются мало или совсем не сжимаются.
Чтобы разархивировать файл TAR, используйте параметр —extract:
<span class="co4">$ </span><span class="kw2">tar</span> <span class="re5">--extract</span> <span class="re5">--file</span> myarchive.tar.xz
Команда tar объединяет множество файлов в один контейнер (иногда называемый tarball). Однако если вы сжимаете только один файл, в контейнере нет необходимости.
Вместо этого вы можете просто сжать файл с помощью таких команд, как gzip, bzip2, xz, zip, 7z и другие.
$ ls
bigfile.xcf.xz
Чтобы распаковать сжатый файл, вы можете использовать «un»-версию команды, которую вы использовали для сжатия файла:
<span class="co4">$ </span>unxz bigfile.xcf.xz
Иногда также есть опция —decompress:
$ xz --decompress bigfile.xcf.xz
Не все дистрибутивы Linux включают все эти команды, поэтому вам, придется установить некоторые из них.
Советы по написанию скриптов
Чтобы преобразовать все файлы в каталоге, просто вставьте команду преобразования в цикл for. Поместите в двойные кавычки переменную имени файла, чтобы обрабатывать любые имена файлов, содержащие встроенные пробелы. Этот скрипт преобразует все файлы PNG в каталоге в файлы WEBP:
for file_name in *.png ; do
convert «$file_name« «$file_name«.webp
done
Чтобы обработать все файлы в каталоге и во всех его подкаталогах, вам необходимо пройти по структуре каталогов. Используйте для этого команды pushd и popd stack или команду find.
Заключение
При разумном использовании команды Linux, которые сжимают и переформатируют файлы мультимедиа, помогут сэкономить гигабайты на жестком диске. Я уверен, что и у вас есть несколько отличных советов, поэтому, пожалуйста, оставляйте их в комментариях.