Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 52 • Страница 2 из 3<  1  2  3  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 06.11.2003
Lord_of_Darkness мысли вслух по поводу сравнения файлов:
Сравнивать файлы для проверки идентичности нужно побитно(побайтно :)) полюбому, но не все, а только у которых есть определённые одинаковые атрибуты.
Этими атрибутами могут быть: размер, crc (или ещё каким нибудь хешем). Строить внутреннюю таблицу из этих пар (+ имя файла конечно) а потом в одинаковых строках сравнивать уже содержимое. Можно делать два разных хеша - больше вероятность одинаковых файлов при совпадении строк, хотя она и так очень не маленькая.
Минусы данного подхода:
1. Построение таблицы (память может кушаться сильно, хотя в 20мб может такая табица уместиться, что... ого-го-го, а 20 мб для проги сейчас уже не очень много).
2. Минимум один раз все файлы для архивации всётаки придёться прочитать

PS: на твою лс не ходил, прочитал, из обсуждения понял что может быть не лишним и высказаться

Добавлено спустя 9 минут, 21 секунду:
можно конечно оптимизировать чтобы не все файлы читать (читать получать хеши и сравнивать только файлы с одинаковыми размерами)



Партнер
 

Lord_of_Darkness
Цитата:
Суть проблемы: если в бат файле пишешь MKDIR "a\b\новая папка\" то папки a и b создаются нормально, а имя "новая папка" отображается неверно (квадратиками и т.д.).

Ты наверное слова Новая папка писал в кодировке win1251?
Дело в том, что консольные команды, каковой является команда MKDIR, используют кодовую страницу 866 (досовскую), а программу ты наверника не в ДОСе писал :-).
Воспользуйся функциями API, а не консольной командой.


 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
sKiPh А вообщето у нас unicode. Или это не NT? - тогда сорри

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
И снова выходные - и снова новая версия :writer:
На этот раз вроде-бы без глюков :oops:
Проблемы с кодировкой исправил.

PreArh 0.4b:
http://cp.people.overclockers.ru/cgi-bi ... _v0.4b.rar

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 06.11.2003
Lord_of_Darkness посмотрел прогу.
А как ей пользоваться? Она создаёт файл RestoreFiles.bat и больше ничего не делает, может что не так? Она не удаляет (это есть гуд) и вроде как не делает (не видно) списка файлов которые нужно заархивировать, батничек для восстановления как уже сказал создаёт.


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
DenisMak
Код:
Программа ищет в заданной директории идентичные файлы (по размеру, имени, контрольной сумме, производит их побайтное сравнение), и устанавливает для всех неидентичных файлов атрибут архивный, а для остальных - этот атрибут снимается. Параллельно формируются два лог-файла, в одном перечислены все найденные файлы, в другом - все идентичные. Далее эту директорию можно заархивировать, предварительно включив в архиваторе (например в WinRar) опцию "Добавлять только с атрибутом "Архивный"" на вкладке "Резервные копии". Файлы, не включенные в архив, можно восстановить, запустив файл RestoreFiles.bat, который находится в указанной для анализа директории.

Похоже надо писать подробный Readme ...
и добавить создание списка файлов для архивации.

Добавлено спустя 3 минуты, 10 секунд:
PS Я был-бы совсем не против если-бы кто-нибудь еще высказался по поводу дальнейшего развития сабжа :spy:

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 01.06.2003
Откуда: Pskov
Смотрю, на сабжевую тему уже целая статья готова :-) (случайно набрел)
http://my-code.newmail.ru/art1predarh.dhtml

Цитата:
Тестирование PreArh+7z не проводилось, т.к. 7z не имеет опции "архивировать только файлы, имеющие атрибут архивный" (по крайней мере я не знаю как ее включить),
А зачем зацикливаться на атрибутах. Проще список составить, как я тут несколько раз уже предлагал. Для большинства пользователей словосочетание "атрибут 'архивный'" мягко говоря будет не очень понятно :-)

Цитата:
И последний вывод:

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

_________________
ПС: [13-06-2006] Идеальный скриншот BIOS'а ? Запросто ! // K.V.


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
Как я и говорил, так и получилось
Цитата:
я уверен что это хорошая идея

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

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Advanced member
Статус: Не в сети
Регистрация: 30.08.2003
Откуда: Санкт-Петербург
Цитата:
Если архивируется папка в которой нет (или очень мало и незначительного размера) одинаковых файлов, то предархиватор просто будет либо бесполезен, либо даже в некоторых случаях вреден для размера финального архива.

в наихудшем варианте - теряем (не-)много времени. Размер увеличивается из-за предархиватора незначительно. Меня больше волновала бы совместимость с Линухом, скажем, где коммандный процессор другой и имеет другие команды... скажем, унрар для рара там есть точно :) а вот command.com или cmd.exe нету :( эмулятор не предлагать (это неинтересно и в данном случае не очень практично)!

_________________
{:€ дед в законе :-) нородный окодемег
почетный пользователь OpenSuSE 11.3
Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Тему воскресили из мертвых! Это хорошо :)
xKVtor
Цитата:
Смотрю, на сабжевую тему уже целая статья готова
она у меня на ПС уже не первый месяц валяется, да и на сайте тоже :)
Цитата:
Проще список составить, как я тут несколько раз уже предлагал.

Эт можно, вот только у меня проблем, компонент, который я для проги юзал остался на DVD, а у меня DVD-ROM'а нету :(
Так что пока никак доработку продолжить не могу :(
А кстати в каком формате список для архивирования должен быть? (в смысле тип и структура файла)
Цитата:
случайно набрел

Если не секрет как?
Root
Цитата:
Меня больше волновала бы совместимость с Линухом

Гм, под линух не кодил есче. Просто не знаю как можно при восстановлении файлов без bat-ника обойтись :?:

Добавлено спустя 1 час, 31 минуту, 49 секунд:
Статья update + тест на скорость!

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Advanced member
Статус: Не в сети
Регистрация: 30.08.2003
Откуда: Санкт-Петербург
Lord_of_Darkness
Цитата:
Гм, под линух не кодил есче. Просто не знаю как можно при восстановлении файлов без bat-ника обойтись

надо уточнить умеет ли рар паковать симлинки и хардлинки. Благо под виндой они тоже есть. Как вариант, писать батник под вин и sh-скрипт (или перловый) под никс. Благо еще и перл вод вынь есть :) правда, далеко не везде :(

_________________
{:€ дед в законе :-) нородный окодемег
почетный пользователь OpenSuSE 11.3
Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Root
Цитата:
Как вариант, писать батник под вин и sh-скрипт (или перловый) под никс.

Мдя, загрузил по полной :insane:

Добавлено спустя 1 минуту, 52 секунды:
Может я и смогу чего такое сделать, но без посторонней помощи (читай советов и буков) вряд ли чего получится.

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

зачем все усложнять? tar+bz2


 

Member
Статус: Не в сети
Регистрация: 01.06.2003
Откуда: Pskov
Lord_of_Darkness писал(а):
А кстати в каком формате список для архивирования должен быть? (в смысле тип и структура файла)
Кажется, там простой текстовый файл, в каждой строке которого перечислены полное название файла (с указанием пути). Вот только не помню, сохраняется ли структура папок при архивировании...
Lord_of_Darkness писал(а):
Если не секрет как?
Гугль, вроде
Lord_of_Darkness писал(а):
Цитата:
Меня больше волновала бы совместимость с Линухом
Гм, под линух не кодил есче.
И не надо. Пускай со своими линуксами его пользователи сами разбираются :-) Или привлекают авторов архиваторов.
Тут бы с виндовым полностью разобраться.
Lord_of_Darkness писал(а):
Статья update + тест на скорость!
Спорный абзац, который мы с Root'ом процитировали, остался без изменений. Даже в самом худшем случае (отсутствие одинаковых файлов) размер архива при использовании предархиватора никогда не будет больше.
Цитата:
WinRar c Предархиватором почти в шесть! раз быстрее чем 7zip
Такие результаты сильно зависят от выборки ;-)
Вот если бы несколько выборок потестить...

Добавлено спустя 8 часов, 58 минут, 34 секунды:
WinRAR.hlp
Цитата:
Использование:
RAR <команда> -<ключ 1> -<ключ N> <архив> <файлы...> <@файл-список...> <путь_для_извлечения>
WinRAR <команда> –<ключ1> –<ключN> <архив> <файлы…> <@файл-список…> <путь для извлечения>

файл-список Файлы-списки – это простые текстовые файлы, содержащие имена файлов для обработки.
Каждое имя файла должно быть указано на отдельной строке и начинаться с первой позиции строки.
В файл-список допускается помещать комментарии, признак начала комментария – символы //.
Например, для архивирования файлов *.txt из папки c:workdoc, файлов *.bmp из папки c:workimage и всех файлов из папки c:workmisc можно создать backup.lst, содержащий следующие строки:
Код:
c:workdoc*.txt     //резервная копия текстов
c:workimage*.bmp   //резервная копия рисунков
c:workmisc

После этого для архивирования достаточно будет выполнить команду:

winrar a backup @backup.lst

В одной командной строке разрешается указывать как обычные имена или группы файлов для обработки, так и файлы-списки.
Если не указаны ни файлы, ни файлы-списки, то подразумевается шаблон *.* (т.е. WinRAR обработает все файлы).

И еще одна любопытная команда, точнее ключ:
Цитата:
<Ключи>
x@<список> -- Не обрабатывать файлы/шаблоны, указанные в файле-списке
Подозреваю, что этот ключ окажется даже более полезным, ведь проще указать полное имя каждого исключаемого файла-дублера.
Цитата:
Пример:

WinRAR a –x@list.txt bin *.exe

Эта команда добавит в архив bin все файлы *.exe, кроме перечисленных в файле list.txt.


Добавлено спустя 11 минут, 56 секунд:
7-zip.chm:
Цитата:
-i (Include filenames) switch
Specifies additional include filenames and wildcards.
-x (Exclude filenames) switch
Specifies what filenames or (and) wildcards must be excluded from operation.

Multiple include switches are supported.
Multiple exclude switches are supported.

Syntax

-i[<recurse_type>]<file_ref>
-x[<recurse_type>]<file_ref>


<recurse_type> ::= r[- | 0]
<file_ref> ::= @{listfile} | !{wildcard}

Где:

<file_ref> -- Specifies filenames and wildcards or list file that specify processed files.

List file

You can supply one or more filenames or wildcards for special list files (files containing lists of files).
The filenames in such list file must be separated by space, tab or new line symbol(s).
Wildcards or filenames with spaces must be quoted.

Multiple list files are supported.

For example, if contents of file "listfile.txt" is the following:

"My programs*.cpp"
Src*.cpp


then command

7z a -tzip archive.zip @listfile.txt

adds to archive "archive.zip" all "*.cpp" files from directories "My programs" and "Src".


Добавлено спустя 15 минут, 3 секунды:
PkZip, PkZip25:

PKZIP [command] [options] zipfile [@list] [files...]

advanced options:
-x@list -- eXclude file(s) in specified list file

Добавлено спустя 37 минут, 11 секунд:
Поглядел настройки FAR'а, точнее: Options > PlugIn Configuration > Archive Support > Command Lines ...
Можно сделать предварительные выводы о том, какие из архиваторов поддерживают архивирование по спискам (см.ниже).
Наверняка большинство из них умеют работать и со списками исключенныхых из архивирования файлов (-x@list.txt), что гораздо полезнее.

Также со списками полных имен файлов работают следующие архиваторы:

ACE32
ARJ32
AIN
JAR32
MSCAB
IMP

Также со списками коротких имен файлов работают следующие архиваторы:

LZH
UC2

_________________
ПС: [13-06-2006] Идеальный скриншот BIOS'а ? Запросто ! // K.V.


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
xKVtor
Цитата:
Спорный абзац, который мы с Root'ом процитировали, остался без изменений.

Профиксим :)
Цитата:
Такие результаты сильно зависят от выборки
Вот если бы несколько выборок потестить...

Сделаем.

С архиваторами буду разбираться, спасибо за инфу.

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Новая версия предархиватора, теперь создает 2 файла - первый с хардлинками на файлы, которые нужно включить в архив, второй с хардлинками на исключенные файлы.
ЗЫ статью подправил

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 01.06.2003
Откуда: Pskov
Lord_of_Darkness

Скачал, потестировал немного. Впечатления:
  • зачем так много опций для в разделе "При сравнении учитывать" ? Сравнивать нужно лишь файлы одинакового размера, причем исключительно побайтно! Все остальные опции совершенно не нужны, и даже вредны.
  • такое подозрение, что прога неправильно производит сравнение.
    Оставлял все галки (по-умолчанию). В итоге программа нашла лишь один файл-дубликат, тогда как на самом деле их там гораздо больше!
    Оставлял всего лишь две галки напротив "размер" и "побайтное сравнение". В итоге многие (а может и все) файлы одинакового размера предархиватор посчитал за дубликаты.
    Дальше экспериментировать с этой версией не вижу смысла -- буду ждать новую. :(
  • не мешало бы описание добавить в архив, или хотя бы ссылку в ReadMe на эту ветку поместить. А то непосявященному человеку совершенно неясно, как и для каких целей пользоваться предархиватором. Почему бы сразу не создавать батник для архивирования (хотя бы для винрара) ? Это вроде несложно сделать...
  • неплохо было бы такие списки составлять так, чтобы можно было их сортировать в программе по разным полям при просмотре результатов анализа.
  • можно как-нибудь оптимизировать создание директорий в RestoreFiles.bat ? чтобы не создавать каждый раз одну и ту же директорию для нескольких файлов
ЗЫ: Тестирование проводил с двумя дистрибутивами WinXP: Pro SP1 и hE SP1.

_________________
ПС: [13-06-2006] Идеальный скриншот BIOS'а ? Запросто ! // K.V.


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
xKVtor
Цитата:
зачем так много опций для в разделе "При сравнении учитывать" ?

Мало-ли кому, что учитывать нужно при сравнении...
Цитата:
Сравнивать нужно лишь файлы одинакового размера

Там и идет сравнение только файлов одинакового размера. Т.е. сравнивается по другим параметрам, только если размер одинаков.
Цитата:
такое подозрение, что прога неправильно производит сравнение.

Посмотрю, но, думаю, врядли.
Цитата:
не мешало бы описание добавить в архив
ok
Цитата:
неплохо было бы такие списки составлять так, чтобы можно было их сортировать в программе по разным полям при просмотре результатов анализа.
Если ты про таблицу найденных файлов, то такая мысль у меня есть давно, времени нет :(
Цитата:
можно как-нибудь оптимизировать создание директорий в RestoreFiles.bat ? чтобы не создавать каждый раз одну и ту же директорию для нескольких файлов

Ну не знаю, может и можно, надо тогда проверку делать, были ли файлы из этой директории уже занесены в bat-ник

В общем грядет новая версия, но когда она будет сам еще не знаю, т.к. работа и сессия :(

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 01.06.2003
Откуда: Pskov
Lord_of_Darkness
Цитата:
Мало-ли кому, что учитывать нужно при сравнении...
Чтобы учитывать, нужно знать, как это работает. Мне, например, не совсем ясно, как учитываются "имя" и "CRC". Можно узнать подробный алгоритм ?
Цитата:
Цитата:
такое подозрение, что прога неправильно производит сравнение.
Посмотрю, но, думаю, врядли.
Так оно и есть на самом деле.

Если запустить прогу, выбрать каталог, кликнуть "Анализ", затем кликнуть "Сжатие", то все нормально работает, претензий нет.

Но если затем убрать галки с пунктов "Имя" и "Контрольную сумму" (+ "Анализ" + "Сжатие"), то программа работает некорректно и возникает описанный мною ранее глюк.

Так что эти навороты с галочками выбора лучше убрать с глаз подальше :-)

Кстати еще один глючек замечен: иногда пропадает первый символ в полном пути файла. Например, вместо "WinXPhe.sp1\..." в батник заносится "inXPhe.sp1\...". Судя по всему, проявляется этот глюк тогда, когда вводится имя директории для поиска, заканчивающееся слэшем. Например: "E:\TestPredarch\" вместо "E:\TestPredarch"

Цитата:
Ну не знаю, может и можно, надо тогда проверку делать, были ли файлы из этой директории уже занесены в bat-ник
проще выделить создание директорий в один батник, а копирование файлов -- в другой. Затем первый отсортировать по возрастанию, убрать повторяющиеся строки (это несложно сделать) и прилепить (append) к нему второй батник (тот, что для копирования).

Добавлено спустя 3 минуты, 36 секунд:
UnIncludedFiles = ExcludedFiles -- так покороче будет :-)

Добавлено спустя 6 часов, 54 минуты:
ЗЫ: через нескольких часов после отправки сообщения заметил, что из него исчезли ВСЕ обратные слэши "\"
Что за бред ? Похоже, это глюк конфы...

_________________
ПС: [13-06-2006] Идеальный скриншот BIOS'а ? Запросто ! // K.V.


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
xKVtor
Цитата:
как учитываются "имя" и "CRC"

Имя файла№1 = имя файла№2 то считается CRC для обоих и сравнивается.
Можно сравнивать только по CRC, но это будет гораздо дольше, т.е. сравнением по имени отсеивается приличное число файлов, и подсчетов CRC нужно делать меньше.
Цитата:
Так что эти навороты с галочками выбора лучше убрать с глаз подальше

Дизайн испортится :(
Цитата:
UnIncludedFiles = ExcludedFiles -- так покороче будет
:D это временно
Цитата:
из него исчезли ВСЕ обратные слэши "\"
Бывает такая фигня довольно часто

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 52 • Страница 2 из 3<  1  2  3  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan