Pull to refresh

Comments 44

Это гениально! и вы таки не поверите, но сжимать можно даже отдельные каталоги!

Жаль только что попытка сжать эти модели топорным способом через Проводник приведёт лишь к +254ГБ потерянного ресурса на диске в вашем случае, ведь эти .gguf не сжимаются вообще.

Представьте теперь зоопарк из ~30-50 разных компьютеров в условном офисе, ВУЗе или школе, где стоят забитые 250ГБ диски SATA. У меня такой кейс уже был минимум один раз. У нас было так, что надо было загружать большой комплект софта на зоопарк - и наши эникейщики даже не понимали, что ломается установка у них потому что на диске C осталось 0 байт свободного места на SSD. Умножьте ~15 минут, потраченных на каждый такой забитый компьютер, чтобы он стал как ваш питомец, а не как зоопарк скотины (опять это клише...), чем он и должен быть, и вы так целый день потратите на то, что сделать довольно просто на бумаге.

О старых ноутбуках 2-в-1 типа Lenovo на Celeron, с 4ГБ ОЗУ и 128ГБ вечнозабитого eMMC хранилища я вообще молчу. И нет, выкидывать их не вариант, они всё ещё работают.

Топорный метод приводил к ~50 минутам на сжатие в одном потоке устаревшим излишне тяжёлым алгоритмом который сжимал всё подряд, даже то что не надо. Накипело так, что теперь усердно и без стыда рекламирую свой пет-проектик, чтобы такого не пришлось другим испытывать.

Интересно, почему файловая система называется NTFS, а не XPFS, если впервые появилась в ХР?

Не в Windows ли NT она появилась )))) ?

Сначала была создана windows NT, которая представила NTFS, затем через два года появилась windows xp

Почти так. Сначала в 1993м году появилась WinNT 3.1 с нтфс, потом через восемь лет, в 2001, появилась ХРюшка.

Не пугайте зумеров, у НТ и НТФС был предок, почему сразу версия 3.1 и пишут что ОС появилась, о, ужас, в 1986 году. Правда это МС как всегда примазалась к чужому труду. То была HPFS, имеющая, кстати, тот же код на MBR разметке диска и ОС была полуОс, или OS/2 фирмы голубой гигант. Без мамы в директорате которой и не было бы “гения” мальчика Билли.

И что это меняет? NTFS, как публично доступная технология, была презентована в 93м году, в виде компонента ОС Windows NT 3.1

Она впервые появилась в Windows NT 3.1 а не в XP.

Это иллюстрация сжатия?

картинка на проверку возраста и осведомлённости о жизни в интернетах

А если диск полетит, сможет ли какая-нибудь программа восстановить такую сжатую файловую систему?

Зависит от того как полетит диск...

Если невозможно прочитать какой то блок на диске, то и несжатые данные повреждаются. Сжатые повреждаются сильнее

Да, но у несжатых файлов больше вероятность повредиться. Тупо больше блоков.

Начиная с Windows 7 использую сжатие для каталогов Windows и Program Files (но не пользовательских). Примерно в 2 раза утрамбовывается. Однако сжатие на каталог наследуется на все вложенные объекты, и все, что в нем будет создано (тут есть нюанс, какая для новых файлов компрессия применится, но не суть важно). Поэтому после сжатия нужно явно "разжать" некоторые вложенные файлы и каталоги, в которых идет запись, такие как реест, например. Все это делается из Windows PE батником, какие файлы и каталоги таким способом нужно "добавить в исключения" - находится периодическим методом тыка, например, по дате изменения, в то же время понятно, что каталоги с EXE и DLL фактически read-only (если не считать обновления, но тут у кого какие приоритеты).

Как всегда, программисты Microsoft внедрили полу‑меры, но до ума эту технологию не довели, чтобы сжимать данные по‑умному, а не всё, что попало.

Всё они до ума довели - просто не все пользователи в курсе. Факт сжатия указывается в атрибуте, который есть не только у диска, но и у папки, и у файла. И в Проводнике этот атрибут доступен, как минимум с XP(SP3, ничего более старого у меня под рукой нет, чтобы проверить). Для работы из командной строки/пакетных файлов имеется команда compact.exe (в XP она тоже есть).

PS И да, сжатие появилось ещё в незапамятные времена, согласно Випидедии - в NT3.51 (я эту версию не застал, мое знакомство с NT началось с NT 4 SP3).

PPS То, что вы написали программу - это хорошо. Но писать то, что вы точно не знаете, не стоило IMHO.

Флажок сжатия разумеется есть (если бы подноготную всю распространил везде, на этой статье простого уровня, представьте как было бы больно эту простыню читать), файловая система конечно же будет знать, что уже сжато, а что не сжато. Но можно было хотя-бы сделать простое отсеивание файлов мультимедиа по расширению .jpg и .mp3, например. В этом и полу-мера, что можно сжать все файлы, даже те, которые не надо сжимать вообще. Это не панацея.

Но писать то, что вы точно не знаете, не стоило IMHO.

"Я, знаешь ли, лучший в своём классе член отряда Navy Seals, участвовал в многочисленных секретных рейдах против «Аль-Каиды*» и имею более 300 подтверждённых~~~.........."

Но можно было хотя-бы сделать простое отсеивание файлов мультимедиа по расширению .jpg и .mp3, например.

Можно. И сделано: как минимум, команда compact издавна принимает в качестве аргумента шаблон имени файла. Не помню, что там со сжатием в GP preferences (я его не помню, а поднимать виртуалку с КД мне сейчас лень), но уж в logon script-то команду compact воткнуть и дальше с ней работать можно точно. Ну да, это не GUI, но профессиональные администраторы работают именно с этими инструментами, а не с GUI-программами. То что вы написали программу с GUI - это хорошо, но в в дистрибутиве самой системы эта программа избыточна: для простых пользователей предназначен Проводник, для администраторов - Group Policy и скрипты. Ну а программы типа вашей - они для продвинутых пользователей, со специфическими требованиями. Ну, а вся идеология ПК от MS (идеология открытой платформы) - она ориентирована на то, что подобные программы для удовлетворения специфического спроса пишут те, кому нужно (ну, или кто хочет заработать на этом денег, хотя сейчас заработать стало трудно).

Я, знаешь ли, лучший в своём классе член отряда Navy Seals

Не ёрничайте: вы - представитель меньшинства, продвинутых пользователей. А потому отдавайте себе отчет, что ваша точка зрения не подходит ни с обычным пользователями, которых большинство (для них это избыточно сложно, их удел - Проводник и галочки в нем), ни профессионалам, которые этих обычных пользователей обслуживают, буде те попадают в их область ответственности: профессионалы пользуются другими инструментами, и эти инструменты находятся вне вашего поля зрения (в статье, по крайней мере, и, возможно это правильно, потому как необъятное объять нельзя) , но они есть, и, в некоторой части - есть уже из коробки, откуда их можно взять и приспособить.

В этом и полу-мера, что можно сжать все файлы, даже те, которые не надо сжимать вообще. Это не панацея.

Профессионалы для этого используют скрипты (.bat-файлы и т.д.).

А разве нельзя сделать так, чтобы 100МБ были близки к 100МБ? Что мешает этому? На самом деле, мешает только незнание того, что эти данные программ можно сжать. А как их сжимать?

этому мешает нежелание пользователя при каждом запуске ждать полную тяжелую распаковку. Отсюда и “нет, нельзя”. Приходится использовать алгоритмы значительно легче и шустрее.

А еще мешает крайне “тяжелое” по процессору изменение сжатых файлов. Вот когда программа хочет интенсивно писать в этот файл кучкой изменений маленьких кусочков - перепаковывать то вам придется порядочно (например, этим свойством обладают СУБД).

Зато это не ии статья )

Стараюсь. Хотя-бы немного мозгов ещё осталось.

Интересно, начиная с Windows 2000 встретился именно с файловой системой NTFS, а не с Windows XP, которая вышла позже на пару лет. И да, это было круто, после FAT почувствовать управление правами на файлы.

А вин-ту-кей это нт5.0, внезапно. И винда серии нт была с 3.1. И на их документах указывают что винда серии нт с 1986, хотя это ос/2 и hpfs, послужившая базой для NTFS.

да-да, именно, из полуоси получили в итоге первую, как я считаю, нормальную винду, а не мастдай, которым был 95, 98 и Me.

Так win32 появился на нт 3.1, а win95 это попытка, успешная, поставить ось вместо дос+гуи 16бит виндовс без нт. К слову, win16 в полуоси работало лучше, стабильнее, чем сама win3.xx. Но это ты, наверняка, сам знаешь.

а из‑за сжатия всего подряд, у вас без причин увеличится нагрузка на процессор и замедлится система.

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

Есть противоречащий момент, у нас есть NVME которые очень быстрые, но по факту производительность в 99% задач такая же как у медленных SATA.

Ну и при работе у вас не один файл распаковывается, а очень много... Ну как бы можно наверно взят процессор помощнее, оперативной памяти побольше, ой...

Так "давно" это так и было. Иногда. Если взять старый даже по тем временам диск и залить на него файлы, которые хорошо сжимаются во много раз, то на их чтении получится хорошая экономия времени. Если же взять более-менее современный накопитель и "обычные файлы", которые сжимаются не в разы, а на проценты, заслуживающей внимания экономии пропускной способности канала не получится.

О! Воспоминание разблокировано...

Впервые со сжатием столкнулся в начала 90х. Была такая программа-дравйвер Стэкер (Stacker). Она вполне приемлемо сжимала файлы. Уже после нее появился нортоновский сжиматель (даже не помню как его звали)...

Естественно - все это было под ДОС.

Ну и - ради чего этот пост пилю. Был у меня кейс, когда этот стэкер УВЕЛИЧИЛ скорость обмена данными. Причем прилично... Не верите? А вот разок пришлось собрать сборку из системы AT но с диском XT (MFM-контроллер и маленьким и тормозным диском в иса шину)... Очень тормозной диск. И очень маленький... В какой то момент кто то предложил вкорячить на него стэкер... И, О! Чудо! Вопреки ожиданиям - диск стал в полтора раза быстрее! Проанализировав результаты пришли к выводу: AT машинка (кажется еще 386sx) с распаковкой справлялась настолько быстро, что время архивации практически не влияло на результат чтения. И получалось, что диск за то же самое время читает то же самое количество байт, но после распаковки их становится в полтора раза больше... В общем - в таком виде машинка проработала довольно долго (по тем временам) - использовалась как секретарская "печатающая машинка".

А смысл? Я что, для того покупал дорогой быстрый SSD, чтоб потом пожертвовать производительностью ради нескольких дополнительных процентов объёма?

Я давненько не занимался глупостями, но, помнится, в ХРюшке включение сжатия папки виндовс замедляло загрузку в три раза, и добавляло заметных лагов работе системы. Как и сжатие %програмфайлз%. Сжимать имеет смысл только то, что ещё не сжато, нужно редко, а выкинуть нельзя -- а таких файлов совсем не так много, как кажется на первый взгляд, так что реальный выигрыш от разумно применённого сжатия составит не обещанные автором 25, а один-два процента.

Для своего питомца вы может и будете использовать дорогостоящий корм, но на целом зоопарке или просто на рядовых бюджетных ноутбуках с розницы, SSD объёмом больше 256ГБ теперь будет весьма дорогим удовольствием.

Одна лишь бесплатная Dota 2 (о которой теперь знают все, в последнее время), теперь занимает без малого треть места на диске размером 256ГБ То же самое с танчиками, каэсочкой, и прочими игорями. Обычная установка Windows без репака от Васи займёт ~60ГБ места на диске. 1-2 игры, десяток программ, и места уже не будет. Вот тут то и нужно сжатие и игр, и программ, и AppData, и самой Windows. Тем более, что Dota 2 сжимается аж на 35ГБ - ну вплоть до ближайшего обновления игры, которая может поменять и перезаписать половину из этого приобретённого места.

В Windows XP таки проблема как всегда со старым тяжёлым алгоритмом, медленными компьютерами, жёстким диском и т.д., но сейчас эти все проблемы исправлены, и во-вторых сейчас люди живут в кризисные времена (ну кроме нас с вами, конечно же).

Тем более, что Dota 2 сжимается аж на 35ГБ - ну вплоть до ближайшего обновления игры, которая может поменять и перезаписать половину из этого приобретённого места.

понимаете, это сэкономленное место как бы есть, но как бы его и нет - и от него вреда больше, чем пользы. Пользователь вот смотрит, что у него 50 гигов свободно - качает туда фильмы. Потом прилетает обновление доты и останавливает всю систему из-за исчерпания диска до нуля. При чем, для пользователя ничего не предвещало беды - дельта с прошлой папкой доты - ну пару гигов всего.

А если мы начинаем задумываться и резервировать пустое свободное пространство под эти случаи…то чем это отличается от занятого пространства?

Вот таки да! Хорошо, когда это место есть -- но увы, квалифицированно им воспользоваться может только технически грамотный человек, понимающий, что он делает и зачем.

Вот я вручную сжимаю некоторые папки и даже некоторые отдельные файлы -- и нет проблем. Я знаю, какие именно, зачем и чем это чревато, и у меня не возникает никаких проблем. А если пользователь бездумно будет плющить всё подряд, или доверит эту тончайшую работу бездушным скриптам, рано или поздно будет "упс".

Поэтому от игр типа Dota 2 сплошной вред.

Но если ставить множество игр, которые не обновляются каждую неделю, например одиночные игры или просто те игры, у которых карты/данные/итд не меняются больше нескольких месяцев (например тот же полудохлый но всё равно весьма популярный Team Fortress 2 и его множество скачиваемых пользовательских карт, которые никогда не чистятся, никогда не обновляются (ведь масштабные обновления базовой игры не приходят), и при этом могут забить легко 35-40ГБ+ на диске, хотя игра сама весит лишь 25-30ГБ), то польза идёт большая от этого. А от сжатия забытых программ в недрах Program Files и AppData - тем более. Лучше подумать о других сценариях, кроме как одной лишь игры типа Dota 2.

В вин95 была системная утилита Double Space (она же DriveSpace), вполне себе была актуальна на те времена, когда диск 100 мб считался нормальным.

Не туда копаете:

всего-то нужен простой советский...)

DOS (c):

"... DOS очистил все,

Все, что было лишним у меня на диске C:

Я нажал F8

И веселый Нортон удалял мне все подряд:

Сорок мегабайт.

Может даже больше, может даже шестьдесят ..."

SSD на 256ГБ остаются в пределах досягаемости по цене из‑за их распространённости

Что такое “досягаемость”? цена за единицу объема обычно падает с повышением емкости накопителя.

Не совсем так. График цена-качество (независимо от того, в каких единицах вы это качество выразите) любого товара практически всегда имеет вот такой вот вид:

Типовой график зависимости цена-качество
Типовой график зависимости цена-качество
Типовой график зависимости цена-качество

То есть, "на дне" (сегмент А) нет смысла переплачивать: за бОльшие деньги вы получите такой же плохой продукт, как и за меньшие. Оптимум для покупки -- это сегмент С: качество эффективно растёт вместе с ценой, вы можете купить настолько хороший продукт, насколько вам хватит бюджета. Сегмент Е -- опять нет смысла переплачивать, рост цены уже не даёт заметного прироста качества. Ну и сегменты В и D -- ни то, ни сё. Товары из этих сегментов лучше не брать, а взять что-то повыше (если вам важнее качество) или пониже (если важнее стоимость).

Так вот, в случае с ссд, накопители на 256гб сейчас находятся где-то в сегменте А.

Идея сжатия на уровне файловой системы старая, как мир. Винда уже 25 лет это умеет, но они забили, потому что жрёт проц и убивает SSD

Именно этого я касался в статье. Пора вспомнить про сжатие снова, потому что все минусы уже исправлены более мощным железом и более правильными алгоритмами, а подбадривает к этому и текущее положение не только с жадными корпорациями, но и с огромной кучей аутсорснутого вайб-кода, раздувающего софт до каких-то невиданных доселе размеров. А ещё разумеется не стоит использовать топорные решения, которым 25 лет в обед, со времён Windows XP. Сжимать весь диск совершенно неразумно. Собственно об этом всём и написано в статье, и я хотел показать, что мы имеем сейчас, и каким образом оно лучше, и как сделать это ещё лучше и проще.

Сжимать весь диск совершенно неразумно.

Как и сплошняком папки виндовс, программфайлз и аппдата. Сжимать надо исключительно вручную, с пониманием, что и зачем сжимаете. Вот, скажем, аппдата/ардуино у меня сжата -- потому что выгоды от сжатия много (почти пять гигов в моём случае), а вред ничтожен, я редко пользуюсь ардуино ИДЕ. Фотошоп и офис в програмфайлз сжаты, потому что выгода есть, а вред мал. А вот папка "загрузки", несмотря на значительный объём, у меня не сжата -- я её просто на отдельный терабайтный hdd линканул, небыстрый, зато довольно дешёвый. Да и смысла нет её сжимать, там файлы в основном уже упакованные куда более мощными средствами.

Я именно к этому и пришёл, и в своей программе сделал простой анализ кусочков файлов через их сжатие, чтобы таким образом подсчитать энтропию файлов. С таким подходом также удастся быстро и достаточно точно предугадать, до какого размера сожмутся файлы таким-то таким-то алгоритмом.

Если файл - архив, картинка, или просто случайные файлы которые уже хранят сжатые данные, то первые два типа отсеются по их расширениям .zip или .jpg, а у третьего типа файлов, в таком исключительном случае, будут взяты несколько маленьких окошек из разных частей файла, чтобы сжать их очень быстрым алгоритмом и определить, сжимается ли он вообще, или нет. Если окошки хорошо сжимаются, например более чем на 15% - то файл будет кандидатом на сжатие.

Теперь можно благодаря ей сжимать и "Загрузки", и "AppData" с огромной кучей кэша типа Electron или Chromium (который уже хранится сжатым), и вообще весь диск. Если взять ~50 таких разных компьютеров и ноутбуков, у которых диски могут быть мелкие, можно одним нажатием сжать весь диск именно там, где нужно. Вот такой юзкейс я вижу, и на мелких дисках это сильно спасает, особенно когда не вариант тратить по 10-15 минут на то, чтобы сжимать всё избирательно. Да и благодаря тому, что сжимается далеко не всё (когда у тебя в сжимаемой папке сборная солянка из сжимаемых и несжимаемых файлов), скорость работы на старых/картофельных компьютерах или ноутбуках не страдает так сильно, как старыми способами.

Имхо может и полезная штука, надо попробовать, сжимать тупо все подряд действительно глупо, никогда не пользовался. А выбирать руками тоже хрень. Спасибо автору, прижмеи - проверю ))

Можно ещё прикрутить дедупликацию (выдрав компонент из винсервера). Или поиграть в энтерпрайз и перейти на ReFS, где и сжатие и дедупликация есть на уровне ФС "из коробки". Но это не для системного раздела, конечно. Плюс поддержка DirectStorage отвалится.

Sign up to leave a comment.

Articles