On-line: гостей 2. Всего: 2 [подробнее..]
АвторСообщение





Пост N: 470
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 06.08.15 16:22. Заголовок: hb_zip / hb_unzip - как проверить целостность архива ?


Добрый день.

Неожиданно обнаружил, что один из создаваемых в автоматическом режиме архивов оказался битый.
Примерно 40% информации из 120 мегового файла "нормальные", а дальше - тупо CHR(0)

До этого момента и после него все идет как нужно, есть подозрение на RDP, которым скачивал файл с удаленного компа на локальный: с инетом были глюки, сессия рвалась несколько раз, каждый раз начинал заново. Копировал Far-ом, может он испортил файл в нештатной ситуации. А может и не он.

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

Нашел в тестах \contrib\hbmzip\tests пример:

hUnzip := hb_unzipOpen( cFileName )

IF ! Empty( hUnzip )
...
ENDIF

Подсунул ему свой битый файл, он тихо вернул пустой хэндл. На крайний случай - подойдет, но хотелось-бы что-нить более "правильное".

Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 35 , стр: 1 2 All [только новые]


администратор




Пост N: 5488
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.02.16 13:43. Заголовок: fokinal21 Тип файло..


fokinal21
Тип файловой системы какой ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 11
Зарегистрирован: 22.09.13
ссылка на сообщение  Отправлено: 29.02.16 11:55. Заголовок: NTFS Про ОС: Должно..


NTFS

Про ОС:
Должно работать на WIN server 2008,
проверил и на win 7 (64) тот же эффект

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3406
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.02.16 12:21. Заголовок: Даже не надо смотрет..


Даже не надо смотреть сырцы hb_zip, чтобы определить причину: где-то используются 32-битные ulong вместо 64-битных.
Попробуйте взять 64-битный харбор, ну и соответственно собрать программы с ним, Возможно, проблема исчезнет.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 13
Зарегистрирован: 22.09.13
ссылка на сообщение  Отправлено: 29.02.16 18:00. Заголовок: Да, собрал, все пошл..


Да, собрал, все пошло...
Только в этом варианте, файлы с русскими названиями,
в архив попадают в виде крякозябров! Может ткнете сразу где залатать?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 819
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 29.02.16 18:44. Заголовок: fokinal21 пишет: То..


fokinal21 пишет:

 цитата:
Только в этом варианте, файлы с русскими названиями,
в архив попадают в виде крякозябров! Может ткнете сразу где залатать?


добавить в программу поддержку CP866 и передавать имена в OEM , т.к. ZIP исторически работает в OEM кодировке

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 14
Зарегистрирован: 22.09.13
ссылка на сообщение  Отправлено: 01.03.16 10:33. Заголовок: спасибо, все пошло! ..


спасибо, все пошло!


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4757
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.03.16 17:00. Заголовок: Что-то мне непонятно..


Что-то мне непонятно, как это сделать.
Имею такой код:
COMPRESS aFiles ;
TO cBackupZip ;
BLOCK { | cFile, nPos | ProgressUpdate( nPos, cFile, aSizeFiles, .T. ) } ;
LEVEL LEVEL_ZIP ;
OVERWRITE ;
STOREPATH ;
FILEPROGRESS { | nPos, nTotal | ProgressFile( nPos, nTotal, .T. ) } ;
RESULT lSuccess

И где здесь ставить перекодировку ?
Или можно сразу перекодировать aFiles, а функция сама возьмёт файлы в OEM кодировке ?
P.S. попробовал перекодировать массив - архив перестал собираться. Видать нужно другую функцию использовать.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5499
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.03.16 17:29. Заголовок: Andrey пишет: Или м..


Andrey пишет:

 цитата:
Или можно сразу перекодировать aFiles, а функция сама возьмёт файлы в OEM кодировке ?


за это время пока ты писал пост , мог бы 100 раз уже проверить своё предположение

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4758
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.03.16 17:45. Заголовок: Да пока другую работ..


Да пока другую работу писал...
Нашёл куда вставить.
Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 820
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 01.03.16 18:08. Заголовок: Dima пишет: Нашёл к..


Andrey пишет:

 цитата:
Нашёл куда вставить.


поздравляю

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5911
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.07.16 14:11. Заголовок: Sergy пишет: Неожид..


Sergy пишет:

 цитата:
Неожиданно обнаружил, что один из создаваемых в автоматическом режиме архивов оказался битый.


Как решил вопрос ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5914
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.07.16 14:17. Заголовок: ZIP наливается на ФТ..


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


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1243
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 23.07.16 14:24. Заголовок: Dima пишет: Не пойм..


Dima пишет:

 цитата:
Не пойму как ловить в этом случае битый не битый архив.


Если ошибка, вычисляешь контрольную сумму файла. Потом делаешь повторное чтение через некоторое время. Опять вычисляешь контрольную сумму. Сравниваешь их. Если разные, значит файл изменился и пробуешь распаковать. Если одинаковые, - значит битый.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5915
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.07.16 14:40. Заголовок: PSP :sm36: ..


PSP

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 495
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 25.07.16 00:45. Заголовок: Dima пишет: Как реш..


Dima пишет:

 цитата:
Как решил вопрос?


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

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 35 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 686
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет