И тем не менее, арк этот же архив распаковывал без проблем. Это проявлялось, если распаковывать не сразу весь архив, а зайти внутрь и через F5. И иногда не всё распаковывалось.
Обсуждение архиваторов
Модератор: /dev/random
-
NickLion
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Обсуждение архиваторов
И тем не менее, арк этот же архив распаковывал без проблем. Это проявлялось, если распаковывать не сразу весь архив, а зайти внутрь и через F5. И иногда не всё распаковывалось.
-
Luinnar
- Сообщения: 246
- ОС: Solaris, Debian, Ubuntu
Re: Обсуждение архиваторов
Я проверил всё корректно.
Как проверял:
Создал tar архив, запаковал его с помощью "xz -9", переименовал оригинальный архив, распаковал tar.xz9 архив и, наконец, сравнил полученный tar с оригинальным с помощью программ diff и cmp. Файлы оказались абсолютно одинаковыми.
Кстати, посмотрел сколько потребляется памяти во время архивации этих файлов (72Mb imap mail box):
Код: Выделить всё
xz -9: 674Mb
xz -8: 370Mb
7z: 193MbЗапустил xz с максимальным сжатием и с ограничением по памяти в 350M (xz -9 --memory=350M) - xz написал, что уменьшает размер словаря:
xz: Adjusted LZMA2 dictionary size from 64 MiB to 30 MiB to not exceed the memory usage limit of 352 MiB
и на выходе получил те самые 30Mb, что и со степенью сжатия -8. Так что всё дело в размере словаря и в доступной памяти. В манах вычитал, что xz ограничивает потребление системной памяти до 40%.
+
Запускал на ночь повторное тестирование для исходников, включающее xz с различными степенями сжатия:
Код: Выделить всё
============================================
378M source code
--------------------------------------------
type size compress_time extract_time
---- ---- ------------- ------------
tar.xz9 65526920 3:28.0 41.5
tar.xz8 66246020 3:26.1 40.9
tar.xz7 67050752 3:23.3 39.5
tar.7z 67792249 1:46.3 42.1
tar.xz 68686588 3:19.3 39.8
tar.xz6 68686588 3:19.9 42.1
7z 68773748 1:43.0 44.7
tar.lzma 68827012 3:21.7 41.9
tar.xz5 71964364 2:28.1 41.6
tar.xz4 74851752 2:27.4 43.2
tar.xz3 77789188 2:26.4 40.6
tar.xz2 83524288 51.6 41.3
tar.bz2 92384314 2:51.7 46.5
tar.xz1 95765372 37.6 45.8
tar.xz0 98239184 35.5 44.9
rar 105805529 2:04.8 -
tar.gz 106120786 16.2 38.0
zip 114070861 17.4 33.5
============================================Спасибо сказали:
-
Luinnar
- Сообщения: 246
- ОС: Solaris, Debian, Ubuntu
Re: Обсуждение архиваторов
И наконец последний, третий тест. Добавил xz -9, который вышел на первое место по степени сжатия с отрывом в 12% от 7zip, что стоило удвоения затраченного времени:
Выводы такие:
1. Критична скорость - выбираем gz.
2. Критичен размер - выбираем xz -9.
3. Если важен как размер, так и скорость, то здесь лучше всего подойдёт 7zip.
Код: Выделить всё
============================================
733M imap mail box
--------------------------------------------
type size compress_time extract_time
---- ---- ------------- ------------
tar.xz9 217184256 9:59.1 31.8
7z 247761545 4:19.0 46.6
tar.7z 247868452 4:05.2 53.4
tar.lzma 257929044 7:47.1 1:28.5
tar.xz 257969224 7:30.7 48.2
rar 281261905 5:57.9 44.7
tar.bz2 359186147 5:20.9 1:26.7
tar.gz 383313519 1:04.6 47.9
zip 383452624 1:05.6 41.2
============================================Выводы такие:
1. Критична скорость - выбираем gz.
2. Критичен размер - выбираем xz -9.
3. Если важен как размер, так и скорость, то здесь лучше всего подойдёт 7zip.
Спасибо сказали:
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Обсуждение архиваторов
итого: лучший архиватор по степень сжатия на сегодня xz -9. его и надо использовать в скриптах и т.д.
ну а ручками удобнее всего 7z.
А самый быстрый видимо gzip (думаю для сжатия простых вещей(для сжатия), например образа где 90% - нули лучше всего пойдёт gzip -1, другие будут работать намного медленнее, а результат будет не намного лучше)
ЗЫЖ это для себя, файлы для других ИМХО лучше всего жать tar.bz2, пользователи Windows распакуют это раром, который установлен почти у всех)
ну а ручками удобнее всего 7z.
А самый быстрый видимо gzip (думаю для сжатия простых вещей(для сжатия), например образа где 90% - нули лучше всего пойдёт gzip -1, другие будут работать намного медленнее, а результат будет не намного лучше)
ЗЫЖ это для себя, файлы для других ИМХО лучше всего жать tar.bz2, пользователи Windows распакуют это раром, который установлен почти у всех)
-
Luinnar
- Сообщения: 246
- ОС: Solaris, Debian, Ubuntu
Re: Обсуждение архиваторов
Согласен, если архив для кого-то, то лучше всего одним из наиболее распространённых архиваторов пользоваться: tar.bz2, tar.gz или вообще zip.
-
sciko
- Сообщения: 1744
- Статус: Ъ-участник
- ОС: Debian/Ubuntu/etc
Re: Обсуждение архиваторов
Я вот смотрю на всё это безобразие и думаю, что было бы очень неплохо, если бы Luinnar сообщил бы нам что именно он сжимает. Ведь для архиватора разница между даже английским тестом и сырцами очень не хилая. Кроме того, могут использоваться всякие предобработки улучшающие сжатие. Кроме того, сжимается судя по всему текст, а хотелось бы увидеть тесты и для бинарников, и blob'ов.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Обсуждение архиваторов
я ещё хотел-бы добавить, что всё сильно зависит от файлов, и от назначения архива:
рар с большим словарём (что-бы жрал память как xz) и с максимальной степенью сжатия жмёт лучше всех (как и 7z с включённым PPMD), однако при этом очень долго всё жмётся, и что самое важное - декомпрессия занимает ровно столько-же времени и ресурсов как и компрессия (выше в тесте это не так, потому-что рар был включен по умолчанию, а по умолчанию там улучшенный LZ77/78, как в ZIP/gzip, вот и результат примерно такой-же).
Если результат сжатия планируется записать на болванку, а потом его постоянно использовать, то лучше всего 7z (с LZMA), xz -9 и остальные архиваторы, которые распаковывают значительно быстрее чем пакуют.
рар с большим словарём (что-бы жрал память как xz) и с максимальной степенью сжатия жмёт лучше всех (как и 7z с включённым PPMD), однако при этом очень долго всё жмётся, и что самое важное - декомпрессия занимает ровно столько-же времени и ресурсов как и компрессия (выше в тесте это не так, потому-что рар был включен по умолчанию, а по умолчанию там улучшенный LZ77/78, как в ZIP/gzip, вот и результат примерно такой-же).
Если результат сжатия планируется записать на болванку, а потом его постоянно использовать, то лучше всего 7z (с LZMA), xz -9 и остальные архиваторы, которые распаковывают значительно быстрее чем пакуют.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Обсуждение архиваторов
там-же написано - почтовый ящик и исходники.
а вот от того КАКОЙ текст очень многое действительно зависит - потому и rar упаковал лучше чем gzip: в последнем нету разных оптимизаций для текстов(на сколько я знаю), а в раре есть. При этом алгоритм почти одинаковый.
а где их брать-то? большие файлы есть, но они либо
1)на самом деле - текст, вроде MySQL базы форума
2)уже архивы
3)мультимедиа - тоже на самом деле архивы
4)не сжатая мультимедиа - её лучше жать спец-софтом, например для звука mpeg1 layer3(mp3), ogg, vw...
пункты 2 и 3 несжимаемы, пункт 1 жмётся как текст.
-
rm_
- Сообщения: 3340
- Статус: It's the GNU Age
- ОС: Debian
Re: Обсуждение архиваторов
ЗЫЖ это для себя, файлы для других ИМХО лучше всего жать tar.bz2, пользователи Windows распакуют это раром, который установлен почти у всех)
Виндовый RAR формат 7z тоже открывает и распаковывает, так что препятствий к использованию 7z нет никаких.
Согласен, если архив для кого-то, то лучше всего одним из наиболее распространённых архиваторов пользоваться: tar.bz2, tar.gz или вообще zip.
Только если там нет русских имён файлов. Если есть - тогда тоже, предпочтение лучше отдать 7z.
-
Luinnar
- Сообщения: 246
- ОС: Solaris, Debian, Ubuntu
Re: Обсуждение архиваторов
sciko писал(а): ↑18.01.2010 12:49Я вот смотрю на всё это безобразие и думаю, что было бы очень неплохо, если бы Luinnar сообщил бы нам что именно он сжимает. Ведь для архиватора разница между даже английским тестом и сырцами очень не хилая. Кроме того, могут использоваться всякие предобработки улучшающие сжатие. Кроме того, сжимается судя по всему текст, а хотелось бы увидеть тесты и для бинарников, и blob'ов.
Я же написал, что именно архивируется: 378 Мб исходников и два e-mail ящика программы thunderbird разных размеров. Исходники - считай, что англ текст, а в ящиках данные смешанные, как текст, так и бинарные данные.
drBatty писал(а): ↑18.01.2010 13:00
а где их брать-то? большие файлы есть, но они либо
1)на самом деле - текст, вроде MySQL базы форума
2)уже архивы
3)мультимедиа - тоже на самом деле архивы
4)не сжатая мультимедиа - её лучше жать спец-софтом, например для звука mpeg1 layer3(mp3), ogg, vw...
пункты 2 и 3 несжимаемы, пункт 1 жмётся как текст.
Можно запускаемые файлы и библиотеки сжимать.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Обсуждение архиваторов
у меня вот не было 7z... а unrar не умеет.
насколько я помню, если распаковать винраром наш tar.bz2, то русские имена не побьются. они побьются если расспаковывать наш zip - у винрара не хватает интеллекта определить, что это не та кодировка.
UPD: нет, попробовал - WinRAR бьёт русские имена в tar.bz2. причём так криво... СЂСѓРіРѕР№_канал
видимо лучше всего и в правду 7z.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Обсуждение архиваторов
там маленькие файлы. дистрибутивы большие, но их никто не сжимает целиком. а на файлах в 50К особенно и не разгуляешься.
Хотя создатели SLAX считают что их пакеты в lzma значительно меньше.
Cейчас попробую папку WINDOWS из ХП сжать...
UPD: оЁ! 1.2Гб получилось! сейчас начну...
-
sciko
- Сообщения: 1744
- Статус: Ъ-участник
- ОС: Debian/Ubuntu/etc
-
rm_
- Сообщения: 3340
- Статус: It's the GNU Age
- ОС: Debian
Re: Обсуждение архиваторов
Я про виндовый RAR говорил (WinRAR), он успешно распаковывает формат 7z.
Если же речь про *никсовые машины, вероятность найти там p7zip в разы выше, чем несвободную версию unrar.
drBatty писал(а): ↑18.01.2010 13:15
насколько я помню, если распаковать винраром наш tar.bz2, то русские имена не побьются. они побьются если расспаковывать наш zip - у винрара не хватает интеллекта определить, что это не та кодировка.
UPD: нет, попробовал - WinRAR бьёт русские имена в tar.bz2. причём так криво... СЂСѓРіРѕР№_канал
видимо лучше всего и в правду 7z.
Побьются, не побьются, что за шаманство?
Всё тут ясно как день. Единственный из перечисленных форматов, который явно задаёт, в какой кодировке он хранит имена файлов - это 7z. Хранит он их всегда строго в UTF-8, вне зависимости, где создавался архив, хоть на винде, хоть на какой-нибудь FreeBSD с древней KOI8-R. Поэтому и распаковать можно где угодно, всегда с правильным преобразованием национальных символов из кодировки архива в локальную (на ФС).
В остальных же форматах, имя файла - это просто некий "поток байт". Совпала кодировка у системы создававшей архив, и у системы распаковывающей - увидим русские имена. Не совпала - увидим всё что угодно.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Обсуждение архиваторов
согласен. проблема в том, что 7z не просто "единственный что задаёт", а вообще единственный, не считая тара.
а с tar'ом я сам мучаюсь, переименовывая файлы из utf-8 в koi8-r (при переносе на старый компьютер), проблема в том, что tar мне не заменить на 7z, т.к. это часть скрипта, который делает ещё много чего. кроме того, мне лень собирать 7z для старого компьютера.
ЗЫЖ
Shell
$ time -p gzip -vv windows.tar
windows.tar: 54.5% -- replaced with windows.tar.gz
real 180.84
user 129.07
sys 5.16
1 213 399 040 windows.tar
552 634 792 windows.tar.gz
Shell
$ time -p bzip2 -v windows.tar
windows.tar: 2.301:1, 3.477 bits/byte, 56.53% saved, 1213399040 in, 527426321 out.
real 824.09
user 736.43
sys 6.24
ну вот... почти никакой разницы. только время 824 против 180
Shell
$ time -p xz -vv windows.tar
xz: Filter chain: --lzma2=dict=8388608,lc=3,lp=0,pb=2,mode=normal,nice=64,mf=bt4,depth=0
xz: 93 MiB (97 620 127 B) of memory is required per thread, limit is 195 MiB (205 371 801 B)
windows.tar (1/1)
100,0 % 422,3 MiB / 1 157,2 MiB = 0,365 758 KiB/s 26:04s
real 1569.75
user 1381.01
sys 14.64
ох... долго-то как!!! полчаса...
стоит-ли это 9%? по сравнению с результатом bzip2?
ИМХО - почти никогда не нужно. разве-что архив не лезет на болванку и т.д.
Итого: лучше всего бинарники жать gzip'ом. ЧТД
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Обсуждение архиваторов
есть iconv, потому я вижу то что надо.
-
Flaming
- Сообщения: 2579
Re: Обсуждение архиваторов
Что-то у себя в man tar оного не нашёл. Какая у вас версия?
Код: Выделить всё
[I] app-arch/tar
Available versions: 1.20 ~1.21-r1 ~1.22 {nls static userland_GNU}
Installed versions: 1.20(17:19:27 15.01.2010)(nls userland_GNU -static)
Homepage: http://www.gnu.org/software/tar/
Description: Use this to make tarballs :)-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Обсуждение архиваторов
tar --help
...
-J, --xz filter the archive through xz
...
$ tar --version
tar (GNU tar) 1.22
Copyright © 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by John Gilmore and Jay Fenlason.
в мане может ещё нету. не вставили пока.
-
Flaming
- Сообщения: 2579
Re: Обсуждение архиваторов
У меня версия 1.20 (я же написал), у вас 1.22. Обновлюсь тогда. 
-
Luinnar
- Сообщения: 246
- ОС: Solaris, Debian, Ubuntu
Re: Обсуждение архиваторов
Раз уж начали, попробуйте ещё 7zip и xz -9, интересно же.
Ещё примечательно, что уровень сжатия -9 увеличивает использование памяти, но практически не меняет время кодирования по сравнению с дефолтным -6.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Обсуждение архиваторов
не могу я xz -9, памяти не хватит.
угу. а у меня всё тормозится. всего 504Мб
7z делать долго и сложно. я и так представляю - вы-же сами видите, нет особой разницы, везде 50%.
-
Sleeping Daemon
- Сообщения: 1450
Re: Обсуждение архиваторов
InterChaynik писал(а): ↑08.01.2010 18:56
В принципе так. Отмечу только вот что:
1) bzip2 и .tar.bz2 что-то слабо как-то сжимают, а tar так вообще, по-моему, вообще не сжимает, а иногда, архив tar размером даже больше чем сам файл;
2) "unrar-free", при отсутствии в сис-ме пакета rar, адекватно, лично у меня, не работает;
3) извините, в Виндовс 7Zip (грубо говоря) - это не то только архив, но и программа такая, а есть ли аналогичная под Линукс, чтоб как в Винде могла похвастаться мощью, всеядностью (поддерживает очень много форматов) и функционалом?
1. Вы не пробовали man bzip2 почитать? а man tar? Нет? Жаль.
2. Для линукса есть 7zip, пакет/программа называется p7zip. Гуй есть, Q7Z называется. Тут обитает: http://code.google.com/p/k7z/
-
Luinnar
- Сообщения: 246
- ОС: Solaris, Debian, Ubuntu
Re: Обсуждение архиваторов
Оставлял на ночь машину тестировать сжатие системной папки WinXP, и вот результат.
Я так же подправил свой скрипт, раньше он выводил реальное время выполнения, а теперь выводит все три (system/user/real). Сразу видно, где используется многопоточность. Так в 7zip user+system time больше чем real time примерно в два раза, что свидетельствует о двух потоках.
Теперь также отображается степень сжатия в процентах (ratio).
Здесь 7zip победил xz -9 по времени (даже по процессорному времени, то есть если бы он без многопоточности работал), а по степени сжатия они примерно одинаковы. Если сравнить их по сжатию tar архива, то xz -9 на 2% лучше выполнил своё дело, однако 7zip, видимо, смог хорошо перетасовать файлы и без tar'а сжал на 2% лучше, чем tar.xz9.
Я так же подправил свой скрипт, раньше он выводил реальное время выполнения, а теперь выводит все три (system/user/real). Сразу видно, где используется многопоточность. Так в 7zip user+system time больше чем real time примерно в два раза, что свидетельствует о двух потоках.
Теперь также отображается степень сжатия в процентах (ratio).
Код: Выделить всё
================================================================
908M WindowsXP
----------------------------------------------------------------
type size ratio compress_time extract_time
---- ---- ----- ------------- ------------
7z 324871378 34% 5.1s/7:10.0u/3:58.8r 2.9s/38.2u/1:07.7r
tar.xz9 351473224 36% 7.8s/10:00.5u/10:24.3r 6.8s/40.0u/1:33.1r
tar.7z 368783128 38% 6.0s/6:45.0u/3:56.1r 7.3s/38.4u/1:18.1r
tar.xz 382059152 40% 6.4s/7:23.5u/7:32.8r 6.1s/42.7u/1:26.8r
tar.lzma 382105892 40% 7.2s/7:19.7u/7:31.7r 6.4s/43.6u/1:24.1r
rar 498867570 52% 13.4s/4:23.0u/3:34.4r 4.5s/23.5u/1:08.9r
tar.xz1 500446472 52% 4.8s/2:40.1u/2:46.3r 6.7s/56.0u/1:30.4r
tar.bz2 513258454 53% 4.0s/3:34.8u/3:44.5r 7.5s/1:39.6u/1:43.3r
tar.gz 527932287 55% 3.7s/51.4u/1:02.0r 6.0s/10.6u/1:10.1r
zip 532835340 55% 2.9s/52.3u/1:08.7r 2.4s/11.6u/59.0r
================================================================Здесь 7zip победил xz -9 по времени (даже по процессорному времени, то есть если бы он без многопоточности работал), а по степени сжатия они примерно одинаковы. Если сравнить их по сжатию tar архива, то xz -9 на 2% лучше выполнил своё дело, однако 7zip, видимо, смог хорошо перетасовать файлы и без tar'а сжал на 2% лучше, чем tar.xz9.
Спасибо сказали:
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
-
Luinnar
- Сообщения: 246
- ОС: Solaris, Debian, Ubuntu
Re: Обсуждение архиваторов
Выкладываю все три необходимых скрипта: archives_test, gtar7z и gtarxz.
gtar7z и gtarxz - это просто wrapper'ы над tar, 7z и xz для более удобного их использования в основном скрипте archives_test. Путь к gtar7z и gtarxz нужно поместить в PATH или скопировать эти скрипты в одну из папок, которая уже находится в PATH. Для запуска тестирования нужно запустить archives_test с одним единственным параметром - путь к файлу/каталогу для тестирования. Необходимо иметь право записи в текущий каталог.
Все три скрипта можно скачать архивом, см. прикреплённые файлы.
archives_test:
Код: Выделить всё
#!/bin/bash
#
# Purpose: test and compare various archivators
# Author: Luinnar
# Modified: 20-Jan-10
tar=gtar
rar="$HOME/bin/rar.exe" # must be without spaces!
tar_version=`$tar --version | head -1 | awk '{print $NF}'`
tar_ver_major=`echo "$tar_version" | awk -F. '{print $1}'`
tar_ver_minor=`echo "$tar_version" | awk -F. '{print $2}'`
tarJ_available=0
(( $tar_ver_major > 2 || $tar_ver_major == 1 && $tar_ver_minor >= 22 )) && tarJ_available=1
dir="$1"
[ -e "$dir" ] || { echo "$dir doesn't exist!"; exit 1; }
# generate absolute path for dir
case "$dir" in
/*|[a-zA-Z]:*);;
*) dir="$PWD/$dir";;
esac
dir_for_wine="z:$dir"
arch_name=`basename "$dir"`
echo "================================================================"
echo -n " $dir: "
dir_size=`du -sk "$dir" | awk '{print $1}'`
(( dir_size *= 1024 ))
echo "$dir_size bytes"
function reformat_time()
{
time_value=`cat`
t_real=`echo "$time_value" | awk '/real/{print $2}'`
t_user=`echo "$time_value" | awk '/user/{print $2}'`
t_sys=` echo "$time_value" | awk '/sys/ {print $2}'`
echo "${t_sys}s/${t_user}u/${t_real}r"
}
function report_result()
{
arch_type="$1"
arch_size="$2"
arch_time="$3"
extr_time="$4"
(( ratio = 100 * arch_size / dir_size ))
echo "$arch_type $arch_size ${ratio}% `echo $arch_time` `echo $extr_time`"
}
function measure_time()
{
2>&1 time -p $@ > /dev/null | reformat_time
}
function test_archive_low()
{
ext="$1"
compress="$2"
extract="$3"
rm -rf "$ext"
mkdir "$ext" || { echo "Cannot create directory $ext"; return 1; }
cd "$ext" || { echo "Cannot change directory to $ext"; return 2; }
compress_time=`measure_time $compress`
arch_size=`ls -l "$arch_name.$ext" | awk '{print $5}'`
extract_time=`measure_time $extract`
cd .. && rm -fr "$ext"
report_result "$ext" "$arch_size" "$compress_time" "$extract_time"
}
function test_archive()
{
ext="$1"
test_archive_low "$ext" "$2 $arch_name.$ext $dir" "$3 $arch_name.$ext"
}
function which_silent()
{
which "$1" > /dev/null 2>&1
}
echo "----------------------------------------------------------------"
echo "type size ratio compress_time extract_time"
echo "---- ---- ----- ------------- ------------"
which_silent xz && [ "$tarJ_available" -eq 1 ] && test_archive "tar.xz" "$tar cJf" "$tar xJf"
which_silent 7z && test_archive "7z" "7z a" "7z x"
which_silent lzma && test_archive "tar.lzma" "$tar c --lzma -f" "$tar x --lzma -f"
which_silent bzip2 && test_archive "tar.bz2" "$tar cjf" "$tar xjf"
which_silent gzip && test_archive "tar.gz" "$tar czf" "$tar xzf"
which_silent zip && test_archive "zip" "zip -r" "unzip"
which_silent gtar7z && test_archive "tar.7z" "gtar7z c" "gtar7z x"
which_silent gtarxz && test_archive "tar.xz1" "gtarxz c -1" "gtarxz x"
which_silent gtarxz && test_archive "tar.xz9" "gtarxz c -9" "gtarxz x"
which_silent wine && [ -f $rar ] && test_archive_low "rar" "wine $rar a $arch_name.rar $dir_for_wine" "wine $rar x $arch_name.rar"
echo "================================================================"
exit 0gtar7z
Код: Выделить всё
#!/bin/bash
#
# Purpose: a wrapper over gtar and 7zip
# Author: Luinnar
cmd="$1"
arch_name="$2"
shift
shift
# WARNING: do not use p7zip here because it creates a temporary file inside /tmp and then moves it to the real destination
case "$cmd" in
c) gtar cf - $@ | 7z a -si -bd "$arch_name" > /dev/null;;
x) 7z x -so -bd "$arch_name" | gtar xf - $@;;
*) echo "Usage: `basename $0` [c|x] arch_name.tar.7z [files_to_archive]"; exit 2;;
esacgtarxz:
Код: Выделить всё
#!/bin/bash
cmd="$1"
shift
level=""
case "$1" in
-[0-9]) level="$1"; shift;;
esac
arch_name="$1"
shift
case "$cmd" in
c) gtar cf - $@ | xz $level > "$arch_name";;
x) xz -d < "$arch_name" | gtar xf - $@;;
*) echo "Usage: `basename $0` [c|x] arch_name.tar.xz [files_to_archive]"; exit 2;;
esacУ вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
-
Luinnar
- Сообщения: 246
- ОС: Solaris, Debian, Ubuntu
Re: Обсуждение архиваторов
Наткнулся на одну неожиданную вещь. Скрипт p7zip, который имеет интерфейс подобный gzip/bzip2/xz, работает через временный файл и сначала ВЕСЬ архив сохраняет в /tmp/p7zipXXXXXX, а потом выводит его с помощью cat! А для распаковки (p7zip -d) он сначала с помощью cat записывает весь архив во временный файл, и только потом распаковывает его. Бред. У нас бэкапы на 44Gb каждый выходят, а он в /tmp/ пишет. Пока перешел на использование
и
Код: Выделить всё
tar cf - <files> | 7z a -bd -si name.tar.7z > dev/nullи
Код: Выделить всё
7z x -bd -so name.tar.7z 2> dev/null | tar xf --
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Обсуждение архиваторов
а... то-то я его терпеть не могу... у меня /var & /tmp на отдельных разделах, где часто мало место для такого...
-
Flaming
- Сообщения: 2579
Re: Обсуждение архиваторов
Luinnar, действительно странно. Ладно бы какой-то буфер использовать... но весь архив в /tmp пихать в 90% случаев глупо. Не поместится.
-
Flaming
- Сообщения: 2579
Re: Обсуждение архиваторов
Luinnar, мне кажется, лучше будет tar -I 7z *** ?
-
rm_
- Сообщения: 3340
- Статус: It's the GNU Age
- ОС: Debian