Ru-Board.club
← Вернуться в раздел «Программы»

» 7-Zip / 7z (часть 2)

Автор: VictorVG2
Дата сообщения: 18.03.2016 18:30
The_Immortal

Ну, коли учесть что к примеру DOC-формат Word 5.5/6.0 for DOS это скорее RTF то в самый раз. Правда позже его легонько переиначили, главное что архиватор для такой задачи и создавался.
Автор: SSchumi
Дата сообщения: 22.03.2016 10:30
Не соображу почему не хочет работать.
У меня есть папка с кучей файлов и папок.
Батник упаковки лежит в этой папке.
В этой папке есть два подпапки src и res (понятно, есть и другие папки/файлы).
Я хочу запаковать в архив определённую папку из src и определённые файлы из определённой подпапки res.
src/f1/f2/debug - все файлы, подпапки из этой папки
res/layout/ - все файлы из этой папки начинающиеся на debug.

Не понял как это сделать, решил сделать по другому, учитывая, что все файлы для паковки у меня начинаются на debug:

call 7z.cmd a -ssw -mx2 -m0=lzma2 -mhe -t7z -mmt=4 -r %ARCNAME% src\* res\* -ir!debug*

Но почему-то игнорирует фильтр и пакует всё, что есть в папке, а не только src/res.

Кратко - я хочу запаковать с удалением из проекта все debug ресурсы/классы, а потом распаковать назад на место.

Добавлено:
Как всегда усложняю:
call 7z.cmd a -ssw -t7z %ARCNAME% -ir!src\debug*.java -ir!res\layout\debug*.xml
Автор: shylExSSchumi
Дата сообщения: 12.04.2016 10:23
Скорее всего так сделать нельзя, как хочу, но всё таки спрошу.
У меня есть батник который пакует по с учетом двух списков - включения и исключения.
Список включения содержит папки относительно текущей (откуда батник запускается) и ряд вложенных.
Всё пакуется хорошо с учётом относительности путей.
Проблема в том, что я хочу запаковать ещё одну папку, но она находится глубоко наверху. Фактически папка в корне.
Если я её добавляю, то файлы из этой папки кладутся в корень архива, а хочется, чтобы структура той корневой папки всё таки тоже сохранялось.
Можно ли как-то извернуться?
Автор: PavelSES
Дата сообщения: 12.04.2016 11:19
shylExSSchumi

Цитата:
Можно ли как-то извернуться?

Создать в начале симлинк на верхнюю папку ведущий на подпаку внутри той директории которая запаковывается?
Например так "linkd ссылка директория" утилитой из Microsoft Windows Resources Kit
Автор: shylExSSchumi
Дата сообщения: 12.04.2016 14:01
Да, наверно так и сделаю. Хотя мне это и не совсем нравится.
Не, можно штатной mklink (ос у меня позволяет).
Ещё думаю второй вариант есть - пакуем сперва основную папку со всеми вложениями.
А потом уже пакупаем папку из корня, но в тот же архив. По идее должно пройти.
Автор: VictorVG4
Дата сообщения: 12.04.2016 20:31
Обновлял тут на 10-м демоне дерево портов и увидел что p7zip v15.14 (UNIX клон 7-Zip) мантейнеры одобрили (берём готовые пакеджи чтобы время на сборку не тратить) Tue Apr 12 17:08:03 2016:

http://portsmon.freebsd.org/portoverview.py?category=archivers&portname=p7zip
http://portsmon.freebsd.org/portoverview.py?category=archivers&portname=p7zip-codec-rar - распаковщик архивов RAR.

ставим как обычно pkgng install p7zip-15.14.txz&&pkgng install p7zip-codec-rar-15.14.txz вроде ничего сложного...

Автор: 790
Дата сообщения: 13.04.2016 23:36
Народ, а как поменять иконки в архиваторе чтобы у архивов zip и 7zip была другая иконка?
Автор: coolcrazy
Дата сообщения: 13.04.2016 23:58
Всем привет, есть такой код:

"C:\Program Files (x86)\7-Zip\7z.exe" a -t7z "D:\archiv\archiv-%date%.7z" -mx7 "D:\MDaemon\Archives\Email\gkmar.ru.IMAP" -ssw

Что необходимо дописать что бы проверять архив после сжатия, и если все гуд удалить исходные файлы которые сжимали ?
Прошу не пинайте, за ранее благодарен всем кто ответил !
Автор: VictorVG4
Дата сообщения: 14.04.2016 01:14
coolcrazy

-sdel (Delete files after compression) switch


Добавлено:
790

В Реестре задать через HKLM\Software\CLSASSES\<filetype>
Автор: PavelSES
Дата сообщения: 14.04.2016 04:28
790

Цитата:
Народ, а как поменять иконки в архиваторе чтобы у архивов zip и 7zip была другая иконка?

Например через 7-Zip Theme Manager
Автор: VictorVG4
Дата сообщения: 14.04.2016 06:06
PavelSES

Через Тьмутаракань на соседнюю улицу. Поправить пару строк в Реестре :

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.7z\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,0" <--- первая

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.zip\DefaultIcon]
@="C:\\program files\\7-zip\\7z.dll,1" <--- вторая

надо этот бред звать.

Говорят в старину к плечам ещё и мозги прилагались, а ныне только вешалка для шапки.
Автор: coolcrazy
Дата сообщения: 14.04.2016 14:49
Все время пишет ошибку при использовании -sdel не пойму почему ?
Автор: regist123
Дата сообщения: 14.04.2016 15:17
coolcrazy
экстрасенсы потерялись во время сбоя ру-борда. Без конкретных данных остаётся только посоветовать вам читать справку к программе. В шапке на русском.
Автор: coolcrazy
Дата сообщения: 14.04.2016 15:51
Может конибудь подсказать как правильно вставить -sdel в строку ?

"C:\Program Files (x86)\7-Zip\7z.exe" a -t7z "D:\archiv\archiv-%date%.7z" -mx7 "D:\MDaemon\Archives\Email\gkmar.ru.IMAP" -ssw
Автор: The Unforgiven
Дата сообщения: 14.04.2016 15:59
coolcrazy
"C:\Program Files (x86)\7-Zip\7z.exe" a -t7z "D:\archiv\archiv-%date%.7z" -mx7 "D:\MDaemon\Archives\Email\gkmar.ru.IMAP" -ssw -sdel

Кстати, рекомендую скачать русскую справку для 7-Zip от gora - там есть, в том числе, и описание ключей на русском - может, так будет проще разобраться.
Автор: coolcrazy
Дата сообщения: 14.04.2016 16:05
Справку выучил наизусть, в вашем варианте подстановки выбивает ошибку (Error: Incorrect command line) Если убрать -sdel снова начинает работать.
Автор: GORA2
Дата сообщения: 14.04.2016 16:17
coolcrazy
Может Вы уже сообщите нам всем версию используемого Вами архиватора или продолжим гадание на кофейной гуще?

Добавлено:
И почему Вы используете на х64 OS x86 версию архиватора?
Автор: coolcrazy
Дата сообщения: 14.04.2016 16:20
7zip 15.14(64bit)
Автор: GORA2
Дата сообщения: 14.04.2016 16:23
coolcrazy

Цитата:
7zip 15.14(64bit)

Это как вы его установили в
Цитата:
"C:\Program Files (x86)\7-Zip\7z.exe"

сюда ставится х86 версия. А?
Автор: coolcrazy
Дата сообщения: 14.04.2016 16:25
Ну собственно (64bit) я указал и для архиватора и для ос(win7)

Добавлено:
Выдрал из интернета похожую на мою команду архивации, извените не обратил внимание на x86, у меня без этого... но сути дела не меняет
Автор: mig73
Дата сообщения: 14.04.2016 16:35
coolcrazy

Код: "C:\Program Files (x86)\7-Zip\7z.exe" a -t7z -mx=7 -ssw -sdel "D:\archiv\archiv-%date%.7z" "D:\MDaemon\Archives\Email\gkmar.ru.IMAP"
Автор: GORA2
Дата сообщения: 14.04.2016 16:48
coolcrazy
Следующий код отработал без ошибок:
Код: "C:\Program Files\7-Zip\7z.exe" a -t7z "D:\archiv\archiv-%date%.7z" -mx7 "D:\tc64-temp" -ssw -sdel
Автор: coolcrazy
Дата сообщения: 14.04.2016 22:46
Большое всем спасибо за помощь, действительно все дело было в моем не обдуманном копипасте "C:\Program Files (x86)\7-Zip\7z.exe" Оказывается в "Program Files (x86)" до меня кто то уже установил 7zip но более старой версии... Ппц. совпало... =))
Автор: metatrop
Дата сообщения: 16.04.2016 18:24
О переходе с 7-zip v9.20 на v15.14 (случившемся сегодня).

Весьма соблазнительной показалась поддержка symlink/hardlink, да и новых форматов тоже. Всё это замечатело, и Игорю Павлову за всё большое спасибо.

На первой же упаковке получилось 39 МБ вместо 30 МБ у v9.20. Выяснилось, что дело в ключе -mqs. Автору стоило бы сделать этот ключ по умолчанию включённым. Но поскольку он этого не сделал, пришлось делать это за него [причины: 1) чтобы не набирать часто лишние символы, 2) не править свои .cmd/.bat файлы, и 3) чтобы не становились эти файлы после такой правки несовместимыми с 9.20 - мало ли какая где версия лежит].


Код:
; PATCH 7z.dll v15.14, 1062912 bytes
;
; Make option -mqs (sort files by extension for solid compression) the default,
; as it was in 7z 9.20 / Use -mqs=off to sort files by their full path.
; Source code: void COutHandler::InitProps() { ... } in 7zHandlerOut.cpp
0004CC0F: 88 66 ; mov [esi+60h],ax
0004CC10: 46 89 ;
0004CC11: 61 46 ;
0004CC12: 88 60 ;
0004CC13: 46 C6 ; mov b,[esi+62h],1 ; _useTypeSorting = false; ==> _useTypeSorting = true;
0004CC14: 60 46 ;
0004CC15: 88 62 ;
0004CC16: 46 01 ;
0004CC17: 62 90 ; nop
Автор: VictorVG4
Дата сообщения: 17.04.2016 08:40
metatrop

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

По распаковке:

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

по распаковке симлинков на хардлинки - вы чуток внимательно посмотрите что есть что ибо то что вы сейчас описали показывает что вы их путаете. Ну, достаточно простое объяснение есть тут Принципиальные различия между hard link, symlink и junction. Будут вопросы - спрашивайте.
Автор: DimmY
Дата сообщения: 17.04.2016 09:09
VictorVG4

Цитата:
На форуме Игорь объяснял почему он выключен

Где/что именно? Кроме констатации факта не вижу ничего.
Автор: GORA2
Дата сообщения: 17.04.2016 09:39
DimmY

Цитата:
Где/что именно?

Он отвечал на вопрос о ключе qs несколько раз, вот один из таких ответов: https://sourceforge.net/p/sevenzip/discussion/45797/thread/e739ae52/#4652/f074/d4e0
Автор: metatrop
Дата сообщения: 17.04.2016 10:04
VictorVG4

Цитата:

пишите скрипт с выбором вариантов сжатия и пользуетесь.


А если внимательнее прочитать изложенные выше "причины"?


Цитата:

чуток внимательно посмотрите что есть что ибо то что вы сейчас описали показывает что вы их путаете. Ну, достаточно простое объяснение есть тут Принципиальные различия между hard link, symlink и junction. Будут вопросы - спрашивайте.


VictorVG, а Вас уважаю, Ваши рассказы о прошлом мне всегда интересно почитать, но вот от таких "советов" воздержитесь.

Есть два (или более) файлов связанные как hardlink, на один из них есть ещё symlink из другого места. Что тут непонятного?


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

И если уж говорить о скорости на NTFS, то тут прежде всего надо при распаковке избегать фрагментации файлов: размер файла известен и можно заранее зарезервировать большой блок (через SetFileValidData, чтобы нули не прописывались напрасно). Примерно как-то так и делает RAR. А 7zip и FreeArc так не делают, к сожалению.
Автор: VictorVG4
Дата сообщения: 17.04.2016 10:59
[more] [more][/more]
metatrop

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

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

Например файл созданный в момент времени HH:MM::SS DD-MM-YYYY мы переносим между несколькими ЭВМ и нам надо отследить историю его изменений во времени. Какая из моделей позволит нам правильно решить данную задачу? Или задача номер два - нам нужно отследить историю изменений объекта относительно локальной ФС. Тут нужен свой подход. [/more]
Автор: metatrop
Дата сообщения: 17.04.2016 11:33
VictorVG4
Если про времена файлов речь о том, что я имел в виду, то (не вполне точно сразу определил поведение RAR) суть в том, что RAR запоминает время Symlink'а в архиве, но 7z не восстанавливает его при распаковке, заменяя временем момента распаковки. Речь идёт о времени последнего изменения файла (время создания тут ни при чём). То есть, 7z просто теряет информацию.

Время Symlink'а - это физически время файла (обычно нулевой длины), поверх которого ставится Symlink. Оно выдаётся при командах типа DIR, и его показывает FAR в панелях. Если же запросить время GetFileTime() по file handle Symlink'а, то возвращается не это "внешнее" время, а время реального объекта, на который указывает Symlink.

Впрочем, это лишь пояснение - проблема в том, что 7z просто теряет информацию при распаковке RAR5 архивов. Никакой пользы тут извлечь нельзя. Если надо текущее время на какие-то файлы поставить, есть команда touch...

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135

Предыдущая тема: RDM+, TSMobiles и VNC+


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.