LINUX.ORG.RU

О сжатии файлов и папок

 , ,


0

2

Здесь amorpher выложил архив 30 с чем-то мегабайт, а когда я его разархивировал, там было в разы больше.

Мне бы так заархивировать папку, в ней много папок, в папках фотографии и видео с разных мероприятий - всего 68 ГБ

Я ничего об этом не читал (кроме мелькающих страниц из гугла ни о чем), никого не слушал, мне ничего не показывали еще. Чем вы архивируете и как?

★★★★★

Последнее исправление: votafak (всего исправлений: 1)

У него в архиве svg-файлы, svg - это xml, а у xml-а десятикратная избыточность.

crowbar
()
Ответ на: комментарий от votafak

Попробуй сжать пяток каким-нибудь архиватором.

greenman ★★★★★
()
Ответ на: комментарий от frob

Ах да, забыл. Раньше, когда ещё попадались на глаза bmp, со сжатыми потрохами не видел.

greenman ★★★★★
()

ну так от содержания же зависит, там же не jpg какое зажато

amorpher ★★★★★
()

заархивировать папку

Кремируй.

68 ГБ

А директорию с 68ГБ бинарных данных ты в самом идеальном случае сожмешь на 50%. Не больше!

Eddy_Em ☆☆☆☆☆
()

Кстати, у меня 16-ГБ образ генты для кубитрака сжался до полутора гигов. Угадай, почему.

Eddy_Em ☆☆☆☆☆
()

На JPG особо не посжимаешь, так что без разницы. Проще сжимать в ZIP - откроется везде из коробки (ну там всякие ведроидоподделки). Вообще сам крутым архиватором является PAQ - но там и очень большое время упаковки и распаковки.

anonymous
()
Ответ на: комментарий от Eddy_Em

Кстати, у меня 16-ГБ образ генты для кубитрака сжался до полутора гигов. Угадай, почему.

Потому что гента - послание божие, она идеальна!

Zhbert ★★★★★
()

А мне вот всегда интересно было, как там умудряются сжать установщики, скажем, вендоигр, что с диска на 700 метров оно расжимается потом в несколько гигов? Как-то наблюдал такое давно еще, лет 10 назад.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

У них там километровые конфиги в XML и тучи текстур в tga.

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Alyssa

Нет, distfiles у меня отдельно в директории, которая через bind монтируется, а ведро я кросс-компиляцией собираю.

Перед сжатием обязательно сделать

dd if=/dev/zero of=/tmpfile bs=10M; rm -f /tmpfile
Тогда весь мусор будет удален, свободное место в образе забито нулями и волосы станут чистыми и шелковистыми.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Zhbert

меня тоже очень радует в таких установщиках, как они распаковывают какой-нибудь школо-paq на 100% одного ядра i5 по полчаса-часу. проще и быстрее плюнуть и купить лицуху

anonymous
()
Ответ на: комментарий от Eddy_Em

А директорию с 68ГБ бинарных данных ты в самом идеальном случае сожмешь на 50%. Не больше!

$ dd if=/dev/zero of=bindata bs=1G count=68
$ 7z a bindata.7z bindata
$ stat -c %s bindata.7z
67
anonymous
()

Не жму и тебе не советую. Сжать ты ничего толком не сможешь, но времени потратишь на это много.

ieeya
()
Ответ на: комментарий от anonymous

купи у автора, ну или инвестируй в его разработ

ieeya
()
Ответ на: комментарий от anonymous

Могу выложить на тындодиск.

Только я последнюю вариацию никак дособрать не могу: почему-то постоянно вылезает ошибка компиляции po4a и binutils. Ну и glibc чего-то не хочет в qemu-вском чруте вставать.

Eddy_Em ☆☆☆☆☆
()

фотографии и видео с разных мероприятий - всего 68 ГБ

Их тоже хочешь сжать в «30 с чем-то мегабайт»?

UNiTE ★★★★★
()
Ответ на: комментарий от ieeya

Зависит от объёма же. .tar на 7 гигов я сжимаю (на ~50%), а .tar на 400 гигов уже действительно смысла нет...

Stil ★★★★★
()

так толсто, что даже очень толсто

zolden ★★★★★
()

lrzip на максимуме попробуй)

devl547 ★★★★★
()
Ответ на: комментарий от frob

BMP поддерживает RLE.

я думал, это называется PCX

anonymous
()
Ответ на: комментарий от thunar

фотографии и видео

несжатые?

нет

votafak ★★★★★
() автор топика
Ответ на: комментарий от UNiTE

фотографии и видео с разных мероприятий - всего 68 ГБ

Их тоже хочешь сжать в «30 с чем-то мегабайт»?

мне интересно, на сколько их можно сжать максимально

votafak ★★★★★
() автор топика
Ответ на: комментарий от votafak

фотографии и видео с разных мероприятий
насколько их можно сжать максимально

До нуля: rm -rf /Photo/allthatshit

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от votafak

А что тут непонятного? Потеряешь процентов 90 говна. Потом еще несколько раз повторишь, и все будет превосходно!

Eddy_Em ☆☆☆☆☆
()

фотографии

Жпегом в 160x120, 70% сжатие.

видео

В 144p 60 kbps H.264, а звукодорожку в Vorbis 48 kbps.

/thread

MiniRoboDancer ★☆
()
Ответ на: комментарий от votafak

Ога, меня тоже просят фоткать всё подряд (нахрена?) и тут же забывают. Пожалуй, если поудаляю все эти рожи на фоне #достопримечательностьнэйм — никто и не заметит.

MiniRoboDancer ★☆
()

votafak, jpg это уже пожатые данные, при том сильно. Можно немного их пожать без упаковки (если они у тебя с доп. информацией - координаты съёмки, выдержка, модель фотоаппарата и т.д.), то можно эту информацию выкинуть, если она тебе не нужна и немножко оптимизировать сами сжатые данные ценой более долгих вычислений наиболее оптимальных вариантов сжатия. Сколько времени уйдет на 68 Гб на твоей машине, я не знаю, но на моей машине как-то так:

Обрабатывается (jpegtran): IMG_2344.JPG
Обрабатывается (jpegtran): IMG_2347.JPG
Обрабатывается (jpegtran): IMG_2348.JPG
Обрабатывается (jpegtran): IMG_2352.JPG
Обрабатывается (jpegtran): IMG_2353.JPG
Обрабатывается (jpegtran): IMG_2360.JPG
Обрабатывается (jpegtran): IMG_2362.JPG
Обрабатывается (jpegtran): IMG_2356.JPG
Обрабатывается (jpegtran): IMG_2367.JPG
Обрабатывается (jpegtran): IMG_2363.JPG
Обрабатывается (jpegtran): IMG_2368.JPG
Обрабатывается (jpegtran): IMG_2375.JPG
Обрабатывается (jpegtran): IMG_2369.JPG
Обрабатывается (jpegtran): IMG_2370.JPG
Обрабатывается (jpegtran): IMG_2379.JPG
Обрабатывается (jpegtran): IMG_2371.JPG
Обрабатывается (jpegtran): IMG_2380.JPG
Готово!
Исходный размер всех обрабатываемых файлов был 45441714 байт а после обработки составил 42794881 байт. Среднее сжатие на 6%
Из них:
JPG: было: 45441714 байт, стало  байт, сжалось на 6%

real	0m3.201s
user	0m15.098s
sys	0m0.656s
А там сам думай, нужно тебе это или нет. Скрипт для пожатия:
#!/bin/bash
#Функции обработки
opt_optipng ()
{
	input="$1"
	echo -e "\e[01;34mОбрабатывается\e[00m \e[01;31m(optipng):\e[00m \e[01;32m$input\e[00m"
	optipng -o3 "$input" >/dev/null 2>&1
}

opt_advpng ()
{
	input="$1"
	echo -e "\e[01;34mОбрабатывается\e[00m \e[01;31m(advpng):\e[00m \e[01;32m$input\e[00m"
	advpng -z -4 "$input">/dev/null 2>&1
}

opt_advdef ()
{
	input="$1"
	echo -e "\e[01;34mОбрабатывается\e[00m \e[01;31m(advdef):\e[00m \e[01;32m$input\e[00m"
	advdef -z -4 "$input">/dev/null 2>&1
}

opt_jpegtran ()
{
	input="$1"
	echo -e "\e[01;34mОбрабатывается\e[00m \e[01;31m(jpegtran):\e[00m \e[01;32m$input\e[00m"
	jpegtran -optimize -progressive -copy none -outfile "$input" "$input" 2>&1
}

opt_gifsicle ()
{
	input="$1"
	echo -e "\e[01;34mОбрабатывается\e[00m \e[01;31m(gifsicle):\e[00m \e[01;32m$input\e[00m"
	gifsicle --batch --optimize=3 "$input" >/dev/null 2>&1
}
#Очистка экрана и поиск файлов для обработки
clear
SIZEPNG=$(find . -type f \( -iname '*.png' -o -iname '*.PNG' \) -printf '%s\n' | tee >(numpng=$(wc -l)) | awk '{SUM+=$1} END {print SUM}');
SIZEGIF=$(find . -type f \( -iname '*.gif' -o -iname '*.GIF' \) -printf '%s\n' | tee >(numgif=$(wc -l)) | awk '{SUM+=$1} END {print SUM}');
SIZEJPG=$(find . -type f \( -iname '*.JPG' -o -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.JPEG' \) -printf '%s\n' | tee >(numjpg=$(wc -l)) | awk '{SUM+=$1} END {print SUM}')
SIZE=$[SIZEPNG+SIZEGIF+SIZEJPG]

#Рабочая часть скрипта
export -f opt_optipng
find  -type f | cut -c 3- | grep -ie '.png$' | sort | parallel opt_optipng '{}'
export -f opt_advpng
find  -type f | cut -c 3- | grep -ie '.png$' | sort | parallel opt_advpng '{}'
export -f opt_advdef
find  -type f | cut -c 3- | grep -ie '.png$' | sort | parallel opt_advdef '{}'
export -f opt_jpegtran
find  -type f | cut -c 3- | grep -e '.JPG$' -e '.jpg$' -e '.jpeg$' -e '.JPEG$' | sort | parallel opt_jpegtran '{}'
export -f opt_gifsicle
find  -type f | cut -c 3- | grep -ie '.gif$' | parallel opt_gifsicle '{}'

#Оформление информации для вывода
echo -e "\e[01;33mГотово!\e[00m"
SIZEPNG2=$(find . -type f \( -iname '*.png' -o -iname '*.PNG' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}');
SIZEGIF2=$(find . -type f \( -iname '*.gif' -o -iname '*.GIF' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}');
SIZEJPG2=$(find . -type f \( -iname '*.JPG' -o -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.JPEG' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}')
SIZE2=$[SIZEPNG2+SIZEGIF2+SIZEJPG2]
if [ $SIZEPNG ]; then
	PERCENTPNG=$[100-SIZEPNG2*100/SIZEPNG]
fi
if [ $SIZEGIF ]; then
	PERCENTGIF=$[100-SIZEGIF2*100/SIZEGIF]
fi
if [ $SIZEJPG ]; then
	PERCENTJPG=$[100-SIZEJPG2*100/SIZEJPG]
fi
if [ $SIZE ]; then
	PERCENT=$[100-SIZE2*100/SIZE]
	echo -e "Исходный размер всех обрабатываемых файлов был \e[01;31m$SIZE\e[00m байт а после обработки составил \e[01;31m$SIZE2\e[00m байт. Среднее сжатие на \e[01;31m$PERCENT%\e[00m
Из них:"
fi
if [ $SIZEPNG ]; then
	echo -e "PNG: было: \e[01;31m$SIZEPNG\e[00m байт, стало \e[01;31m$SIZEPNG2\e[00m байт, сжалось на \e[01;31m$PERCENTPNG%\e[00m"
fi
if [ $SIZEGIF ]; then
	echo -e "GIF: было: \e[01;31m$SIZEGIF\e[00m байт, стало \e[01;31m$SIZEGIF2\e[00m байт, сжалось на \e[01;31m$PERCENTGIF%\e[00m"
fi
if [ $SIZEJPG ]; then
	echo -e "JPG: было: \e[01;31m$SIZEJPG\e[00m байт, стало \e[01;31m$SIZEPJPG\e[00m байт, сжалось на \e[01;31m$PERCENTJPG%\e[00m"
fi
upd

увидел ошибку в выводе - вместо

if [ $SIZEJPG ]; then
	echo -e "JPG: было: \e[01;31m$SIZEJPG\e[00m байт, стало \e[01;31m$SIZEPJPG\e[00m байт, сжалось на \e[01;31m$PERCENTJPG%\e[00m"
Надо
if [ $SIZEJPG ]; then
	echo -e "JPG: было: \e[01;31m$SIZEJPG\e[00m байт, стало \e[01;31m$SIZEJPG2\e[00m байт, сжалось на \e[01;31m$PERCENTJPG%\e[00m"

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 3)

Я ничего об этом не читал (кроме мелькающих страниц из гугла ни о чем), никого не слушал, мне ничего не показывали еще.

был занят употреблением кокаина?

darkenshvein ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.