Преамбула
Здесь я писал о том, что такое SquashFS и зачем оно надо. Иногда удобно использовать такие файловые системы вместо архиваторов, и не столько из-за степени сжатия (которая у архиваторов выше), а за большую скорость доступа и возможность работы с данными без разархивации. Например, вы скачали какой-нибудь сайт целиком wget-ом. Это куча html-ек и графических файлов, но они занимают много места, менять вы их не собираетесь, а хотите только просматривать время от времени. Легко и просто: сжимаем каталог с сайтом:
mksquashfs www.vasya.ru www.vasya.ru.sqРасширение можно указать любое, которое понравится. Потом, когда захотите посмотреть на этот сайт и побродить по нему, просто прикручиваете на петлевое устройство файл - и вперёд. Распаковка "на лету" происходит незаметно - для современных процессоров это семечки. Посмотрели, открутили - и забыли. Удобно, просто и легко.
Вариант: есть много ISOшников, которые не так часто используются. Сжимаем их тоже в SquashFS, а когда надо, например, погонять их в эмуляторе, просто прикручиваем на петлю и указываем эмулятору на iso-файл, который виден в точке монтирования. И никакой утомительной разархивации.
Тестирование SquashFS в Linux
Проводилось тестирование на скорость и степень сжатия по шести видам файлов (которые у меня чаще всего попадаются). Красным выделялся архиватор с наибольшей степенью сжатия. Участие в тестировании приняли архиваторы, наличествующие в Debian GNU/Linux (и кое-какие, в нём по религиозным лицензионным соображениям отсутствующие, но установленные), как то: bzip2, p7zip (многопоточный), gzip, arj, rar (проприетарный, полнофункциональная trial-версия, после тестирования удалён), mksquashfs v3.0, mksquashfs v3.1 (многопоточный).
Тестирование проводилось на машине следующей конфигурации: P4 630 (3GHz, 2Mb cache, HyperThreading), Intel i915 PGNL Motherboard, 2Gb DDRAM, HDD 36Gb WD Raptor + 250Gb WD 250JB, ATi X200 VideoCard. OS Debian GNU/Linux v3.1 "Sarge" с оптимизированным ядром Linux версии 2.6.15.7 \#1 SMP PREEMPT i686. На момент тестирования время непрерывной работы машины составляло 95 дней.
При архивировании утилитам передавались параметры:
- mksquashfs
- rar a -m5
- bzip2 --best -z
- p7zip
- gzip --best
- arj a -m4
1. Много больших несжатых полутоновых видеофайлов
Тест несколько искусственный, так как эти "фильмы" сделаны из простых полутоновых BMP-файлов. В свободном виде они занимают просто чудовищный объём, а нужны для оптических экспериментов (эксперимент MotionScreen, кому надо, тот знает). В чистом виде занимают 1.5Гб, а вот что с ними стало после архивирования:
Архиватор | Время | Компрессия | ||||
squashfs 3.0 | 61 | 175,07 | ||||
squashfs 3.1 | 83 | 175,07 | ||||
rar | 114 | 508,66 | ||||
bzip2 | 140 | 2900,95 | ||||
p7zip | 307 | 5017,85 | ||||
gzip | 101 | 191,5 | ||||
arj | 31 | 53,24 |
Архиватор p7zip показал самую высокую степень сжатия, однако, несмотря на то, что он работал в многопоточном режиме (ядро с активированной поддержкой HyperThreading), сжимал дольше всех. Хвалёный и тем более несвободный rar порядком проигрывает свободному bzip2 при сравнимой скорости сжатия. Сжатие squashfs несколько в стороне, хотя и довольно быстрое. Занятно, что многопоточное исполнение для утилиты сжатия squashfs даже снизило её быстродействие (тест запускался трижды, значения те же).
2. Цветные RAW-файлы
Фотографии в формате "прямо с камеры" объёмом в 90 Мб были сжаты теми же архиваторами - посмотрим, что из этого вышло:
Архиватор | Время | Компрессия | ||||||
squashfs 3.0 | 14 | 1,06 | ||||||
squashfs 3.1 | 13 | 1,06 | ||||||
rar | 61 | 1,1 | ||||||
bzip2 | 37 | 1,14 | ||||||
p7zip | 72 | 1,12 | ||||||
gzip | 12 | 1,06 | ||||||
arj | 1 | 1 |
Здесь с незначительным перевесом по степени сжатия, но почти вдвое по скорости обскакав конкурентов, лидирует bzip2. В этой программе squashfs выглядит уже не так бледно, находясь так же на уровне gzip.
3. Офисные документы
Здесь я вытащил find-ом всё, что имело расширение doc, odt, xls и ods. Получилось немного, на 30Мб, но тем не менее:
Архиватор | Время | Компрессия | ||||||||||
squashfs 3.0 | 4 | 1,07 | ||||||||||
squashfs 3.1 | 4 | 1,07 | ||||||||||
rar | 20 | 1,07 | ||||||||||
bzip2 | 15 | 1,07 | ||||||||||
p7zip | 19 | 1,13 | ||||||||||
gzip | 4 | 1,07 | ||||||||||
arj | 0 | 1,05 | ||||||||||
Здесь свободный p7zip снова делает проприетарный rar, причём не только по степени сжатия, но и по скорости (а вот тут, быть может, HyperThreading и сыграл, а rar его не держит - проприетарщина, а ещё денег просит). SquashFS очень шустрый, и компрессия неплохая, очень похожая по результатам на gzip (в этом тесте размер архива gzip и sq просто совпали байт-в-байт, что наводит на мысль о том, что в squashFS сжатие если не zip, то во всяком случае очень похожее).
4. Полутоновые графические файлы TIF
Много экспериментальных результатов приходится хранить в tif-файлах, так что интерес к тому, кто круче их жмёт (не обязательно быстро) неслучаен. Сжато файлов на 82Мб, вот результаты:
Архиватор | Время | Компрессия | ||||||||
squashfs 3.0 | 20 | 1,81 | ||||||||
squashfs 3.1 | 18 | 1,81 | ||||||||
rar | 48 | 1,97 | ||||||||
bzip2 | 25 | 2,4 | ||||||||
p7zip | 132 | 2,23 | ||||||||
gzip | 19 | 1,86 | ||||||||
arj | 6 | 1,51 |
Первое место вновь за свободной программой: bzip2 очень лихо жмёт tif-файлы, а кроме того очень быстро. Чуть меньше степень сжатия у p7zip. SquashFS при той же компрессии в многопоточном режиме жмёт немного быстрее, но тоже на уровне gzip - как по скорости, так и по сжатию (здесь разница между ними была ровно 200 байт).
5. Скачанный сайт
Мой любимый тест - сайтов я качаю много, так что очень и очень актуально. Здесь пожат портал www.teatips.ru, где находится всё, что можно и нужно узнать о чае. Всего 460Мб, немного терпения и результат:
Архиватор | Время | Компрессия | |||||||
squashfs 3.0 | 38 | 3,49 | |||||||
squashfs 3.1 | 30 | 3,49 | |||||||
rar | 167 | 3,03 | |||||||
bzip2 | 257 | 4,41 | |||||||
p7zip | 188 | 4,59 | |||||||
gzip | 22 | 4,26 | |||||||
arj | 19 | 2,68 | |||||||
6. ISO-образ
Пожат первый iso-образ диска с Дебианом Сарж, 650Мб:
Архиватор | Время | Компрессия | ||||||
squashfs 3.0 | 74 | 1,03 | ||||||
squashfs 3.1 | 75 | 1,03 | ||||||
rar | 718 | 1,05 | ||||||
bzip2 | 297 | 1,03 | ||||||
p7zip | 411 | 1,05 | ||||||
gzip | 65 | 1,03 | ||||||
arj | 16 | 1 |
Rar таки обошёл p7zip, но на сколько? Не поверите, но аж на 0,0039% - я уверен, что это стоит тех денег, которые Рошаль с вас потребует за консольную версию своего чудотворного архиватора.
В общем, сжимать iso-шники здорово простым gzip, быстро и примерно так же по компрессии, как и все другие. А ещё лучше isoшники пожимать в squashFS, ибо их можно пропаливать на болванки и гонять в эмуляторах, даже не распаковывая.
Итоги
Ну вот, пока тесты закончились и заметка написана, и в комнате теплее стало. :-)
Здесь хотелось бы отметить важный момент: открытые архиваторы почти всегда уделывают проприетарные, либо по скорости, либо по компрессии. Так что для того, чтобы эффективно сжимать свои данные, вовсе не обязательно платить за это деньги, так как p7zip и bzip2 есть под распространённые платформы и распространяются под GPL-совместимыми лицензиями.
SquashFS по компрессии и скорости близка к gzip, что вовсе не так плохо: в ряде случаев её применение более чем оправдано, особенно если вы часто имеете дело со скачанными сайтами или большим количеством редко изменяемых офисных документов.
Считать деньги в чужих карманах - нехорошо... :)
ОтветитьУдалитьХвалить p7zip и bzip2 - можно и нужно, но пинать при этом rar... Фи...
2 StraNNicK
ОтветитьУдалитьСтатья вообще-то о сравнении архиваторов со squashFS, а не между собой. Пинание при этом рар - побочный эффект :-)
Считать деньги в чужих карманах - нехорошо... :)
Рошаль - жлоб, и брать деньги за консольную версию - хамство. Моё ИМХО. Имею право :-)
Хвалить p7zip и bzip2 - можно и нужно, но пинать при этом rar...
А почему нет? Почему идёт реклама проприетарного архиватора, когда есть лучшие бесплатные альтернативы?
спасибо за статью!
ОтветитьУдалитьбуду всем пользователям windows советовать ставить 7zip (собственно и раньше так делал вот уже на протяжении 2х лет примерно, с тех самых пор как к 7zip оболочку приделали
да. и не могу не присоединиться к страннику -- зря ты Рошаля так полощешь... хороший дядька.
ОтветитьУдалитьДля полноты картины надо указывать ключики командной строки.. а то щас как 7zip без сжатия, и rar с solid архивацией напущу на кучу html'ек посмотрим кто победит.
ОтветитьУдалить2 aim
ОтветитьУдалитьне могу не присоединиться к страннику -- зря ты Рошаля так полощешь... хороший дядька.
Да... согласен... перебор. Надо будет поправить. Спасибо.
2 kmmbvnr
Для полноты картины надо указывать ключики командной строки..
О, это точно, это я пропустил. Будет исправлено.
Большое спасибо товарищам комментаторам за конструктивную критику и тёплые слова.
несовсем в тему но если я хочу запаролить скажем bzip2 как я это делаю?
ОтветитьУдалитьи еще одно, можно ли bzip2 сделать что нибудь вроде recovery record
2 Ramaloke
ОтветитьУдалитьнесовсем в тему но если я хочу запаролить скажем bzip2 как я это делаю?
Не в курсе, в мане не нашёл.
и еще одно, можно ли bzip2 сделать что нибудь вроде recovery record
А вот это в мануале написано: bzip2recover - recovers data from damaged bzip2 files
А еще есть патч к squashFS - www.squashfs-lzma.org, который добавляет к родному gzip сжатию squashFS возможность lzma-компрессии (она используется в p7zip). Там при упаковке блоки жмутся обеими методами и выбирается наименьший.
ОтветитьУдалить2 loki8
ОтветитьУдалитьА еще есть патч к squashFS
Большое спасибо - не знал, обязательно посмотрю и добавлю в пост.
а для "запаролить" есть pgp
ОтветитьУдалитьнесовсем в тему но если я хочу запаролить скажем bzip2 как я это делаю?
ОтветитьУдалитьНе в курсе, в мане не нашёл.
И незачем искать, ибо для *NIX'ов характерна модульность, т.е. выполнение каждой программой достаточно узкой задачи при поддержке методов интеграции между программами. Т.е. шифровать надо другими утилитами.
и еще одно, можно ли bzip2 сделать что нибудь вроде recovery record
А вот это в мануале написано: bzip2recover - recovers data from damaged bzip2 files
Цитата из мануала не о том, о чем спрашивалось. Записи, а особенно тома для восстановления -- это, на мой взгляд, самое существенное, в чем p7zip отстает от rar'а.
Статья интересная, но.
ОтветитьУдалить1) В squashfs используется LZMA. То, что размер байт-в-байт совпал с зипом, скорее всего, связано с максимальной степенью сжатия
2) Основная фишка squashfs - не скорость компрессии, а высокая скорость блочной распаковки при произвольном доступе. Поэтому её так любят лайвсидишники.
3) rar - отстой.
4) LZMA также используется в xz, который используется в пакетных системах (например, Arch Linux). Но если сравнить squashfs с xz, то по скорости компрессии выиграет xz, а по скорости распаковки - сквош. Догадываетесь, почему?