Форум » Для флейма » Варианты архивирования своих баз ? » Ответить

Варианты архивирования своих баз ?

Andrey: Всем привет ! Поделитесь опытом, кто как делает резервное копирование баз ? У меня реализовано на вызове консольного RAR. Но это все же платная утилита. Хотел перейти на 7z, но он списки исключения не поддерживает. Заранее спасибо.

Ответов - 51, стр: 1 2 3 All

Pasha: Я использую библиотеку hbzlib для xHarbour. Примерно так: hb_ZipFile(cArcPath, aFiles,, ,, cPwd, .t.) для распаковки - функция HB_UnzipFile()

Andrey_IV: Странно насчет списков исключения в 7z А как же тогда опция: -x[r[-|0]]]{@listfile|!wildcard}: eXclude filenames Пример: 7z a -x@list_file arc_name *.* а в list_file: file1.prg file2.prg все работает! или речь не об этом ?

AlexMyr: Andrey пишет: У меня реализовано на вызове консольного RAR. Но это все же платная утилита. Есть Open-source ARJ __http://arj.sourceforge.net/ FreeArc — современный архиватор общего назначения. __http://freearc.org/ru/default.aspx


gfilatov2002: Есть еще такой бесплатный вариант на сайте http://www.backupbuilder.com Все настраивается, с поддержкой русского языка

Andrey: Andrey_IV пишет: все работает! или речь не об этом ? Блин, а у меня что-то не заработала... Буду еще пробовать. А как добавить файлы по списку "включения" (как в rar) ?

Andrey: Pasha пишет: Я использую библиотеку hbzlib для xHarbour. А можно чуть поподробней написать ? Код полностью встраивается в EXE-кик или внешняя DLL нужна ? Как прицепить к своему консольному приложению ? Как прицепить к MiniGui приложению ? Заранее спасибо.

AlexMyr: Andrey пишет: А как добавить файлы по списку "включения" (как в rar'e) ? [img src=/gif/smk/sm33.gif] Из хелпа по 7z: -i (Include filenames) switch Specifies additional include filenames and wildcards. Multiple include switches are supported. ... 7z a -tzip src.zip *.txt -ir!DIR1\*.cpp

Pasha: Andrey пишет: А можно чуть поподробней написать ? Это библиотека hbzip.lib, ее сырцы - в contrib Если ее ликовать, то все полностью будет в exe Хотя я делаю по другому, сделал из нее dll, но это уже дело вкуса

gfilatov2002: Andrey пишет: Как прицепить к MiniGui приложению ? Посмотри готовый пример в папке minigui\samples\basic\zip в котором используются следующие дополнительные библиотеки из поставки Харбора: - hbziparc - hbmzip - minizip - hbzlib

Andrey: AlexMyr пишет: Из хелпа по 7z: Блин, полночи долблюсь, по форумам лазию, никак не могу понять почему не исключаются из АРХИВА указанные папки ? 7-Zip 9.18 beta, нашел русский хелпер. Bat -файл: @echo off J:\MyProga\UTILI\7z.exe a -r -ssw "C:\@ARX\Архив-БД_2011.01.17.7z" J:\MyProga\*.* -x@Nobackup7z.lst echo . echo ===== АРХИВ-БД создан в папке ==== echo --- C:\@ARX\Архив-БД_2011.01.17.7z pause Nobackup7z.lst - файл: *.exe *.com *.pif *.prg *.lnk *.ico *.scr *.scl *.lex *.wbs *.bas *.chm J:\MyProga\BaseAbon.ini J:\MyProga\ZAIVKA\zaiv_arx.dbf J:\MyProga\ZAIVKA\zaiv_arx.fpt J:\MyProga\DBASE\abon2006.dbf J:\MyProga\DBASE\abon2007.dbf J:\MyProga\DBASE\abon2008.dbf J:\MyProga\DBASE\abon2009.dbf J:\MyProga\PLATA\plat2006.dbf J:\MyProga\PLATA\plat2007.dbf J:\MyProga\PLATA\plat2008.dbf J:\MyProga\PLATA\plat2009.dbf J:\MyProga\DOCUM\*.* J:\MyProga\IMPRT\*.* J:\MyProga\UTILI\*.* J:\MyProga\TEMP\*.* J:\MyProga\FORMS\*.* J:\MyProga\UPDATE\*.* Кто знает подскажите пожалуйста ! WinRar на таком файле работает !

Andrey: Вопрос снимается, нашел ответ: DBASE\abon2006.dbf DBASE\abon2007.dbf DBASE\abon2008.dbf DBASE\abon2009.dbf и т.д. Т.е. используютя не полные пути как в RAR'e ! При использование архива 7z сжатие на DBF-ках в 2-раза лучше. (Запуск 7z.exe a -t7z -mx7 ......) У rar собирает архив 4,5 Мб, а 7z - 2,5 Мб.

Andrey: Столкнулся с другой бедой... Не записывает пути файлов при архивировании !!! Т.е. файлы в архив добавляет без указания путей ОТКУДА (где лежит) файл находился ! Команда: 7z.exe a -ssw -t7z -mx7 -i@backup.add "C:\@ARX\Архив-БД.7z" Файл backup.add : J:\MyProga\UPDATE\update-new.txt J:\MyProga\UTILI\*.INI J:\MyProga\IMPRT\import*.dbf J:\MyProga\FORMS\print4.ini Где копать ?

AlexMyr: Andrey пишет: Файл backup.add : J:\MyProga\UPDATE\update-new.txt J:\MyProga\UTILI\*.INI J:\MyProga\IMPRT\import*.dbf J:\MyProga\FORMS\print4.ini Если это файлы в архиве, то они с путями, или не так?

AlexMyr: У себя использую freearc (нужен только arc.exe), такой батник cls @echo off setlocal set "curr_date=%date: =_%" set "curr_date=%curr_date:/=%" set "curr_date=%curr_date:.=%" set "curr_date=%curr_date:-=%" arc a stor c:\1cbases\ -mx -r -di=hacmwfk# -rr -ag -x*.cdx >%curr_date%.log Создается архив с именем stor20110101235505.arc, попадает весь каталог c:\1cbases\ за исключением файлов с расширением cdx.

Vladimir: Andrey Перед вызовом 7z.exe a -ssw -t7z -mx7 -i@backup.add "C:\@ARX\Архив-БД.7z перейди в каталог MyProga (CD MyProga) и из него вызывай 7-Zip. А в backup.add впиши UPDATE\update-new.txt UTILI\*.INI IMPRT\import*.dbf FORMS\print4.ini Как вариант, backup.add разместить отдельно от архивируемых файлов, тогда в команде архиватора вместо -i@backup.add потребуется указать путь к нему.

Andrey: AlexMyr пишет: Если это файлы в архиве, то они с путями, или не так? Файлы в архив записались, но БЕЗ путей !!! Просто архив и в нем эти файлы без путей....

Chikanuk: Вот такой вариант не пробовал? И исключения, и пути, и самораспаковывающийся архив, и в разные места сохраняет... Причем на флешку - всегда заново, а в SET _ARCPATH_ - только изменившиеся файлы. Для работы потребуются 7za.exe и 7z.sfx @ echo off COLOR 0C echo !!!! КОПИРУЕТСЯ БАЗА !!!! echo ПОДОЖДИТЕ ... SET _BASEPATH_="D:\-\" SET _ARCPATH_="D:\-\BACKUP\" SET _USBPATH_="F:\" :waiter rem echo Ожидание закрытия 1С... if exist %_BASEPATH_%\SYSLOG\links.tmp goto waiter rem getting current date for /f "tokens=1-4 delims=:,./- " %%I in ("%DATE%") do set BACKUP_DATE=%%K-%%J-%%I rem getting current time for /f "tokens=1-2 delims=:,./- " %%I in ("%TIME%") do set BACKUP_TIME=%%I-%%J COLOR 0A del %_USBPATH_%Base_backup.exe 7za.exe a -sfx7z.sfx %_USBPATH_%Base_backup %_BASEPATH_%*.* -x!*.cdx -r -t7z -mx1 7za.exe u %_ARCPATH_%BACKUP-%BACKUP_DATE% %_BASEPATH_%*.* -x!*.cdx -x!*.7z -r -tzip -mx1 PS: обнови 7z (беты - они и есть беты...).

Andrey: Vladimir пишет: перейди в каталог MyProga (CD MyProga) и из него вызывай 7-Zip. Не хочется заморачиваться с переходом ! Я же ОДИН архив делаю, чтоб юзер мне его прислал, а я мог распаковать и работать с ихними базами. А если сделать несколько команд: @echo off 7z.exe a -ssw -t7z -mx7 "C:\@ARX\Архив-БД.7z" J:\MyProga\UPDATE\update-new.txt 7z.exe a -ssw -t7z -mx7 "C:\@ARX\Архив-БД.7z" J:\MyProga\UTILI\*.INI 7z.exe a -ssw -t7z -mx7 "C:\@ARX\Архив-БД.7z" J:\MyProga\IMPRT\import*.dbf 7z.exe a -ssw -t7z -mx7 "C:\@ARX\Архив-БД.7z" J:\MyProga\FORMS\print4.ini Пути сохраняться ? Нет, пути не сохраняются и при таком варианте !!! Как мне заставит записать их в архив ???

Andrey: Chikanuk пишет: Для работы потребуются 7za.exe и 7z.sfx А чем отличается 7za от 7z ? Платный он или нет, какая лицензия на него ?

AlexMyr: Из хелпа 7z: a (Add) command Adds files to archive. Examples 7z a archive1.zip subdir\ adds all files and subfolders from folder subdir to archive archive1.zip. The filenames in archive will contain subdir\ prefix. Добавляет все файлы и субдиректории из диретории subdir в архив archive1.zip. Имена файлов содержат путь. 7z a archive2.zip .\subdir\* adds all files and subfolders from folder subdir to archive archive2.zip. The filenames in archive will not contain subdir\ prefix. Добавляет все файлы и субдиректории из диретории subdir в архив archive2.zip. Имена файлов не содержат путь. Andrey пишет: J:\MyProga\UTILI\7z.exe a -r -ssw "C:\@ARX\Архив-БД_2011.01.17.7z" J:\MyProga\*.* -x@Nobackup7z.lst Попробуйте убрать *.*, убрать -r J:\MyProga\UTILI\7z.exe a -ssw "C:\@ARX\Архив-БД_2011.01.17.7z" J:\MyProga\ -x@Nobackup7z.lst

Andrey: AlexMyr пишет: Попробуйте убрать *.*, убрать -r J:\MyProga\UTILI\7z.exe a -ssw "C:\@ARX\Архив-БД_2011.01.17.7z" J:\MyProga\ -x@Nobackup7z.lst Этот архив НОРМАЛЬНО создается - с путями ! Другой вариант не работает. Хочу к архиву добавить ОПРЕДЕЛЕННЫЕ ФАЙЛЫ С ПУТЯМИ ! Andrey пишет: Команда: 7z.exe a -ssw -t7z -mx7 -i@backup.add "C:\@ARX\Архив-БД.7z" Файл backup.add : J:\MyProga\UPDATE\update-new.txt J:\MyProga\UTILI\*.INI J:\MyProga\IMPRT\import*.dbf J:\MyProga\FORMS\print4.ini Как добавит в архив несколько файлов из разных папок и чтоб в архиве были пути по которым файлы брались ?

Chikanuk: Из фака с http://www.7-zip.org/faq.html: How can I store full path of file in archive? 7-Zip stores only relative paths of files (without drive letter prefix). You can change current folder to folder that is common for all files that you want to compress and then you can use relative paths: cd /D C:\dir1\ 7z.exe a c:\a.7z file1.txt dir2\file2.txt Andrey пишет: А чем отличается 7za от 7z ? Платный он или нет, какая лицензия на него ? 7za - консольный вариант. Лицензия - как и у всего 7z. Денег не просят... Andrey пишет: Не хочется заморачиваться с переходом ! Я же ОДИН архив делаю, чтоб юзер мне его прислал, а я мог распаковать и работать с ихними базами. Батник ранее высланный является рабочим вариантом. Лежит в папке с базами. При запуске архивирует ВСЕ подпапки и сохраняет структуру каталогов. И упаковывает в один файл (с текущей датой и временем). Что вам и требуется, имхо. С ключами можно поэкспериментировать (увеличить сжатие или повысить скорость...)

AlexMyr: Пробуйте (у меня сохраняет с путями, правда все файлы и каталоги лежат на одном диске) 7z a aa \2\ -i@backup.txt Добавляет все файлы и подкаталоги из директории \2\ в архив aa, плюс все файлы xpi из каталога 3\, и все файлы prg из каталога bin\3\ backup.txt 3\*.xpi bin\3\*.prg

AlexMyr: Тот же freearc, все пути есть, НО без имени диска. arc a aarc c:\2\*.* @backup.txt backup.txt 3\*.xpi bin\3\*.prg bin\4\hb_out.log d:\0\hb_out.log

AlexMyr: Наверное нужно тему перенести во флейм - никакого отношения к [x]harbour кроме hbzlib не имеет.

Andrey: AlexMyr пишет: Пробуйте (у меня сохраняет с путями, правда все файлы и каталоги лежат на одном диске) А номер версии у 7z какая ? Я поставил 7-Zip 9.20 AlexMyr пишет: Наверное нужно тему перенести во флейм Согдасен !

Pasha: AlexMyr пишет: Наверное нужно тему перенести во флейм - никакого отношения к [x]harbour кроме hbzlib не имеет. Правильная постановка вопроса. Зачем вообще нужны эти внешние архиваторы ? Харбор же умеет работать к архивами zip непосредственно, без всяких костылей. Подготовил параметры, вызвал функцию - получил архив. Вызвал другую - распаковал его куда надо.

Dima: AlexMyr пишет: Наверное нужно тему перенести во флейм Сделал.

AlexMyr: Andrey пишет: А номер версии у 7z какая ? тоже на 9.20

Andrey: Pasha пишет: Правильная постановка вопроса. Зачем вообще нужны эти внешние архиваторы ? Согласен полностью. Просто хочу временно заплатку приделать. Времени не хватает для правильной переделки !

Andrey: gfilatov2002 пишет: Посмотри готовый пример в папке minigui\samples\basic\zip в котором используются следующие дополнительные библиотеки из поставки Харбора: - hbziparc - hbmzip - minizip - hbzlib Что то нет уже всех библиотек в новой поставке... Нашел только Zip Zip_2 Zip_3 Какая из библиотек быстрей сжимает файлы ? Я делал тесты ранее, несколько папок, файлы *.dbf *.fpt *.dbt *.tbr *.txt *.log - объем примерно 5Гб, сделал архивацию несколькими ВНЕШНИМИ архиваторами, получилось: формат zip (через Winrar) - архив получился 144Мб, создает за 2 мин. формат arc (через FreeArc) - архив получился 61Мб, создает за 13 мин. формат zip (через 7z) - архив получился 145Мб, создает за 5 мин. формат 7z (через 7z) - архив получился 85Мб, создает за 12 мин. Ну конечно нужно подбирать методы сжатия для увеличения быстродействия.... А сейчас сделал программу на МиниГуи (используя пример \MiniGUI\SAMPLES\BASIC\Zip) и был "убит" скоростью архивирования, ну очень медленнооооооо архивирует.... Подскажите пожалуйста как ускорить создание архива !

Dima: Andrey пишет: Подскажите пожалуйста как ускорить создание архива ! Программно только подбором степени сжатия. Железный вариант , делать архивацию на SSD винте. зы Andrey пишет: объем примерно 5Гб Размер не маленький и если скорость архивации важнее чем размер архива , тогда ставь степень сжатия ноль (1 или 2) и юзай hbzip

gfilatov2002: Andrey пишет: сделал программу на МиниГуи (используя пример \MiniGUI\SAMPLES\BASIC\Zip) Пожалуйста, обратите внимание на параметр lShowFileName в функции ProgressUpdate этого примера. Просто уберите задержку INKEY(.1) при обработке каждого файла, и дело пойдет намного быстрее

Andrey: Dima пишет: Программно только подбором степени сжатия. Программа 7za сжимает за 5 минут при степени сжатия (-mx7) А переделанный пример \MiniGUI\SAMPLES\BASIC\Zip больше ЧАСА... Даже не стал ожидать... Может чего-то я с бегунком "нахимичил"... не знаю... Пока пробую исправить...

Andrey: gfilatov2002 пишет: Просто уберите задержку INKEY(.1) при обработке каждого файла, и дело пойдет намного быстрее Да убрал совсем... Все равно БОЛЬШИЕ тормоза.... Вот результат (на Win8-32bit): Программа 7za сжимает за 5 минут при степени сжатия (-mx7) - размер архива 173 Мб Переделанный пример \MiniGUI\SAMPLES\BASIC\Zip (при LEVEL 7) за 44 минуты - размер архива 186 Мб Программа WinRar (4.20) сжимает за 4 минут при степени сжатия (-m5) - размер архива 122 Мб Программа Rar (4.20) сжимает за 3 минут при степени сжатия (-m5) - размер архива 122 Мб Народ, подскажите как ускорить процесс архивирования (да и чтобы размер не сильно вырос) ? Т.к. архив на сайт отправлять потом нужно будет...

Dima: Andrey пишет: Я делал тесты ранее, несколько папок, файлы *.dbf *.fpt *.dbt *.tbr *.txt *.log - объем примерно 5Гб, Andrey пишет: Народ, подскажите как ускорить процесс архивирования (да и чтобы размер не сильно вырос) ? А что к моменту архивации все 5 гиг инфы могут измениться ? Можно архивировать только измененные файлы , но тут нужно подумать как это правильно реализовать. Andrey пишет: Хотел перейти на 7z, но он списки исключения не поддерживает. Поддерживает однако

petr707: Цитата: Хотел перейти на 7z, но он списки исключения не поддерживает. А подробнее опишите ситуацию, каких исключений не хватает. Можно явно определять просмотром папок и генерировать файл со списком файлов для упаковки. Использую следущий вызов командной строки в отдельном minimize окне s_exe :="7za.exe a -r -y -slp -mx=1 -ssw "+(arh_name)+" -x!*.NTX -xr!*.$$$" +" -w"+(tmp_dir) здесь исключения *.NTX,*.$$$ Можно вместо 7za.exe - прикрутить исходный код от 7z, он же OpenSource

Andrey: petr707 пишет: Можно вместо 7za.exe - прикрутить исходный код от 7z, он же OpenSource А как ? Мне бы окошко с бегунком от него нужно... А самый лучший вариант в 4 потока архивировать... Только я не знаю в какую сторону копать....

petr707: 7za при формате архива .7z - сам умеет делить по потокам, не нужно это делать за него, у него лучше получится А вместо исходного кода - можно сделать портирование dll в Harbour 7zip links нужно найти кто умеет и возьмется

Andrey: Нашел более лучший вариант - создать архив файлов в 4 потока ! Есть 7zG.exe - с бегунком... Внешний вид отличный: 5 Гбай за 1 минуту пакует в 4-потока в архив на 136 Мб... Несколько раз проверял... Команда запуска: "C:\Program Files\7-Zip\7zG.exe" a TEST-7z3 -mx=3 -mmt=4 -ms=on -m0=LZMA2 -r0 *.dbf *.fpt *.dbt *.tbr *.txt *.lst *.plt *.key *.cfg *.pth *.log *.rtf Параметры: "a" - команда добавления файлов в архив; "TEST-7z3.7z" - имя создаваемого архива; "-mmt=4" - работать в 4 потока; "-mx=3" - задать режим работы "Fast" (x=3); "-ms=on" - создавать непрерывный (solid) архив, для экономии места; "-m0=LZMA2" - принудительно задействовать алгоритм LZMA2; "-r0" - включить подкаталоги рекурсивно только для подстановочные имена; " *.dbf *.fpt....." - какие файлы по маске сжимать. Осталось придумать, что делать если на компе не установлен архиватор - 7z ! Наверно лучше в свой ехе-ник эти exe и dll "затолкать" и их использовать из командной строки .... Интересно как будут антивирусники реагировать на это ?

Andrey: Andrey пишет: А переделанный пример \MiniGUI\SAMPLES\BASIC\Zip больше ЧАСА... Даже не стал ожидать... Может чего-то я с бегунком "нахимичил"... не знаю... Разобрался я с этим примером... Убрал все задержки и был ОЧЕНЬ удивлен.... Переделанный пример \MiniGUI\SAMPLES\BASIC\Zip создает архив из файлов (5Гб): (при LEVEL 7 или 9) за 2 минуты - размер архива 186 Мб (при LEVEL 5) за 1,30 минуты - размер архива 218 Мб т.е. архиватор 7z делает такой же архив за 1 минуту и архив занимает 136 Мб - примерно одинаково ! ДЛЯ текстовых файлов и БД файлов ! Для нынешних винчестеров и флешек 50 Мб разницы не особо существенно ! Резуме: МиниГуи - рулит !!! Пример собирал с ключем -mt А как лучше для этой библиотеки ZIP - делать сборку ( с ключом -mt или без него ) ?

Dima: Andrey пишет: Пример собирал с ключем -mt А если этот же переделанный тобой пример собрать без ключа -mt , какой будет результат при LEVEL 5 , LEVEL 7 ?

Andrey: Dima пишет: А если этот же переделанный тобой пример собрать без ключа -mt , какой будет результат при LEVEL 5 , LEVEL 7 ? LEVEL 7 - тоже 2 минуты LEVEL 5 - 1 минута 37 сек. Т.е. ключ -mt не влияет на скорость ?

Dima: Andrey пишет: Т.е. ключ -mt не влияет на скорость ? Нет конечно.

AlexMyr: Andrey пишет: Резуме: МиниГуи - рулит !!! и каким боком тут minigui (кажется я это уже говорил)

Andrey: AlexMyr пишет: и каким боком тут minigui Да просто на нем можно делать внешнюю программу архивирования для своих нужд. И по скорости создания/размера архива не особо отличается от WinRar и 7z. В этом смысле и "рулит"...

Pasha: hmg почему-то имеет в своем составе папку hbziparc с копией стандартных zip-функций [x]Harbour. Причем эти функции при сборке hmg не участвуют и не включаются ни в одну библиотеку. По хорошему, папку source\hbziparc стоило бы удалить совсем. А так, конечно, minigui тут ну совершенно ни причем. Почему-то пользователи minigui считают, что они пишут "на minigui". Вы пишете на харборе, и используете эту библиотеку gui.

Andrey: Pasha пишет: Вы пишете на харборе, и используете эту библиотеку gui. Да конечно, я понимаю что пишу на Харборе... Просто с МиниГуи красивей выходит, и проблемы МиниГуи вылазиют из-за незнания матчасти...

gfilatov2002: Pasha пишет: hmg почему-то имеет в своем составе папку hbziparc с копией стандартных zip-функций [x]Harbour. Причем эти функции при сборке hmg не участвуют и не включаются ни в одну библиотеку. Не совсем так Они участвуют и компилируются при запуске батника MakeAllHarbourLibs.bat Pasha пишет: По хорошему, папку source\hbziparc стоило бы удалить совсем. Не стоит этого делать, поскольку оригинальные исходники были слегка модифицированы для успешной работы с библиотекой Минигуи

Pasha: gfilatov2002 пишет: Не стоит этого делать, поскольку оригинальные исходники были слегка модифицированы для успешной работы с библиотекой Минигуи Я заметил две правки в hb_zipFile() - сохранение атрибута файла при упаковке и возврат корректного значения при неудаче открытия файла, и одну - в hb_unzipFile, связанную с разбором имени архива. Все эти правки полезные, и не относятся к особенностям работы hmg. Может быть, стоит предложить внести эти небольшие модификации в модуль ziparc.prg в самом харборе,и использовать его в hmg ? Иначе получается не очень хорошая ситуация. Полезные правки этого модуля в hmg недоступны в харборе, и наоборот, полезные правки в харборе (например, поддержка mt) не учтены в hmg.

Andrey: Pasha пишет: Может быть, стоит предложить внести эти небольшие модификации в модуль ziparc.prg в самом харборе,и использовать его в hmg ? Я за !



полная версия страницы