Инкрементный архив

Обсуждение программы nnBackup

Инкрементный архив

Postby e_v_g » Fri, 23 Jul 2010, 12:21

Добрый день!
Делаю инкрементные архивы. Объем файлов большой, за время создания 0-го дампа меняются файлы, а 1-ый дамп проверяет от времени окончания создания 0-го. Таким образом в 1-ый дамп не попадают измененные файлы. Как то можно решить эту проблему? Как я понимаю, надо чтобы в dumpdates.txt фиксировалось время начала архивирования, а не окончания, да и желательно с секундами. Иначе инкременты получаются некорректными.
e_v_g
 
Posts: 5
Joined: Fri, 23 Jul 2010, 12:11

Re: Инкрементный архив

Postby elos » Sat, 24 Jul 2010, 20:45

e_v_g wrote:...Как я понимаю, надо чтобы в dumpdates.txt фиксировалось время начала архивирования, а не окончания, да и желательно с секундами. Иначе инкременты получаются некорректными.

Может это поможет - -ts или -dumple? Несколько опций командной строки nnBackup предназначены специально для режима инкрементного резервного копирования.
elos
 
Posts: 665
Joined: Tue, 25 Apr 2006, 11:15

Re: Инкрементный архив

Postby e_v_g » Mon, 26 Jul 2010, 08:27

Нет, эти команды помочь не могут, так как в файле dumdates.txt фиксируется время окончания архивации. У меня архивация dump 0 идет несколько часов, за это время файлы могут измениться(несмотря, на то, что это ночь) и в результате в dump 1 они не попадают. Либо никто не пользуется инкрементными архивами, либо кто пользуется не задумывается об этом, либо уповает на теорию вероятности - ну если архивация быстро проходит, то может и ничего. А реально получается только иллюзия, что у нас есть надежный бэкап!
e_v_g
 
Posts: 5
Joined: Fri, 23 Jul 2010, 12:11

Re: Инкрементный архив

Postby elos » Mon, 26 Jul 2010, 09:50

Да, проверил - есть такое... Но!
Никто не отменял в файловой системе атрибут "архивный". Поставь -A -a a. То есть после копирования снять атрибут "архивный" и скопировать файлы с архивным атрибутом (он устанавливается после изменения/создания файла). Почему-то все забывают про этот атрибут - как не замечают воздух. А только с его использованием можно или сильно укоротить и упростить в некоторых случаях алгоритм, или не обращать внимание на "время" файлов.

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

Как-то так.

И хоть раз приведи свою строку команды - что ж все догадываться должны о вариациях ключей...
elos
 
Posts: 665
Joined: Tue, 25 Apr 2006, 11:15

Re: Инкрементный архив

Postby e_v_g » Mon, 26 Jul 2010, 11:47

Да архивный это выход из положения, спасибо за подсказку. Но снятие атрибута с командой dump не работает, так что получается уже другой способ архивации - не инкрементный архив командой dump, а инкремент по атрибуту. Мне кажется разработчику стоит обратить внимание на некорректность режима dump.
А что касается моей строки, пож-та:
D:\Util\nnbackup\nnbackup.exe dump 0 -dx @noarch.lst -i d:\Bases -o e:\!Arch -dn "Bases_%%DD%%.%%MM%%.%%YYYY%%" -s -v -m @mask.cfg -extzip RAR

Но что она Вам даст. Я не буду описывать весть скрипт, нет смысла. В воскресенье создается 0-ой dump, в остальные дни инкрементные, дробить на кусочки очень неудобно - их будет слишком много, да и играть в теорию вероятности не хочется, а исключить "нечто", к сожалению, нельзя. Скрипт работает отлично, только пришлось от него отказаться, поскольку хоть и файлы ночью меняются не так часто, но рисковать не хочется. Меня вполне устроило бы если запись в файле dumpdates, будет фиксировать время начала архивации или даже время начало работы программы (список составляется несколько минут и за это время даже если изменится файл то он просто попадет лишний раз в dump 1). У меня даже возникла мысль подменять в конце работы скрипта dumpdates на более "правильный", но потом решил что проще все это реализовать просто rar-ом с ключом -ta
e_v_g
 
Posts: 5
Joined: Fri, 23 Jul 2010, 12:11

Re: Инкрементный архив

Postby elos » Tue, 27 Jul 2010, 09:49

e_v_g wrote:..., но потом решил что проще все это реализовать просто rar-ом с ключом -ta

Code: Select all
  ta<дата>      Обрабатывать файлы, изменённые после <даты> (ГГГГММДДЧЧММСС)
Ну, раз ты сам формируешь дату, допустим nncron-ом, то кто мешает это же делать им же для nnbackup-а для ключей типа -D* ? То есть ключей работы с датами файлов.

В помощи было что написано?
Не забывайте, что в режиме dump (как и в остальных режимах) вы можете тонко настраивать - какие именно файлы будут обработаны. Для этого можно использовать, например, включающие и исключающие маски имен файлов (-m, -x) или фильтры по дате создания/последней модификации файла (-D, -DC, -DW), размеру файлов (-LT, -GT), атрибутам файлов (-a, -ax).


Мне же ближе другой путь. Пусть дампирование идет через строго определённый промежуток времени - пусть будет 48 часов, они же двое суток (хотя можно ещё предположить и дамп по некоему событию, что приведёт к нескольким вариантам реализации). Тогда просто применим ключ:
Code: Select all
-RD 02 (обрабатывать файлы, которые изменились/появились за последние 2 дня)

Не будем думать, что автор не занимался тщательной проработкой программы.Как пример - файл из исходников ..\backup2\todo\dump-new-method.txt (обратим внимание на дату письма):
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
От: ЗАОр НП НЧ КБК <postmaster@kbk.chelny.ru>
Кому: nemtsev@nncron.ru
Написано: 20 декабря 2002 г., 18:17:13
Тема: Ошибка в nnbackup v.2.15 ?
Файлы: <нет>
--====----====----====----====----====----====----====----====----====----===--

При инкрементном резервном копировании при уровне dump >0 nnbackup сравнивает
по дате изменения файлов. Если в каталог добавлены файлы (дата
создания тогда будет текущая, дата модификации может быть любой) или
перенесены из другого каталога (дата создания и дата модификации может
быть любой), то эти файлы из процесса резервирования выпадают.

Я думаю, более правильно создавать файл с информацией о
файлах в каталоге на момент архивации (имя файла, дата создания, дата модификации) и
сравнивать с ним. Он, кстати, должен очень хорошо жаться архиватором и
его можно также использовать как журнал. (К тому же у вас очень
скромный режим verbose)

Можно по другому. Раз вы прописываете в etc/dumpdates.txt информацию
о создании архива, можно туда прописать и полный путь к архиву и брать
всю нужную информацию о файлах из этого архива. Если архив не найден
(например перенесен в другое место), то попросить указать это место и
прописать новое местоположение файла архива). Если это сделать
невозможно, (например, архив записан на CD-ROM и удален с жесткого
диска) попросить запустить утилиту для создания файла с информацией о
файлах в архиве).

Хотя я больше склоняюсь к первому варианту. Проще и надежней.

Из пожеланий. Их много, а все из-за того что shell в Windows, в отличии
от Unix-подобных систем, очень бедный. Хотелось бы получать отчет по email.
Лучше два, в случае ошибок - отдельным письмом. Заготовить несколько
стандартных шеловских шаблонов. Я, например, использую
комбинированный - вначале полная архивация (делаю с нее копию,
записываю на CD-ROM и кладу в сейф :)), затем инкрементная по дням
,потом дифферинциальная по неделям, и все это в стеке по месяцам на
количество лет, сколько места на диске не жалко.

А в целом, ваша программа мне нравиться. По крайней мере,никогда не доверю
ведение процесса архивации важных файлов чужой программе которая хранит их в своем
формате (есть и такие). Чем надежней, тем лучше. Все-равно, это нужно
в основном сист.администраторам, а им спокойней работать с шеловсими командами в
текстовых файлах. я, например, все сделал с помощью at и copy (если
нужно архивировать - wzcline)

С наилучщими пожеланиями, Ахметзянов Хамит


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Кстати, про пожелание выше - пока создается список файлов, кто-то из файлов может поменяться уже после занесения в список. Чем это кончится? В архивной папке может оказаться изменённый файл и "журнал", где по нему совершенно другая информация. В дальнейшем это рано или поздно тоже кому-то боком бы вылезло.


Позволю себе пофилософствовать (сегодня не так жарко и тянет на порассуждать). Сила любой программы зависит от знания пользователем особенностей программы (её ключей) и комбинаторности мышления (зависит от практики и количества прочитанного и освоенного).
elos
 
Posts: 665
Joined: Tue, 25 Apr 2006, 11:15

Re: Инкрементный архив

Postby e_v_g » Tue, 27 Jul 2010, 11:19

Мне же ближе другой путь. Пусть дампирование идет через строго определённый промежуток времени - пусть будет 48 часов, они же двое суток (хотя можно ещё предположить и дамп по некоему событию, что приведёт к нескольким вариантам реализации). Тогда просто применим ключ:

Ну и где гарантия надежности архивирования в этом случае, так плюс-минус остановка.
Не будем думать, что автор не занимался тщательной проработкой программы
Если бы он не занимался программы бы и не было. Но! Мне суть такой логики непонятна. Я считаю это багом, но можно считать это и фичей. Да программа хорошая, но имеет кучу тонкостей и требует тщательного изучения и аккуратного применения. Но о такой особенности в инструкции не написано. Я не буду покупать такую программу (я говорю о коммерческом применении) Я не знаю сколько еще таких фич в ней заложено. Я хочу быть уверенным что программа делает архивы. Пока программа распространяется "as is" вопрос нет. Если за деньги, то уж извините, если автор с 2002г. не считает нужным исправить неправильную логику или не видит вариантов по ее улучшению (ну на всех ведь не угодишь), то он хотя бы может обратить на это внимание в руководстве.
Ну, раз ты сам формируешь дату, допустим nncron-ом, то кто мешает это же делать им же для nnbackup-а для ключей типа -D* ? То есть ключей работы с датами файлов.
Теперь уже формирую, но зачем мне тогда nncron??? Написал сам батник, полдня потратил. Если кому интересно могу скриптом поделиться.
И еще по поводу атрибута "Архивный", надо еще проверить в какой момент nncron снимает атрибут, а то у rar тоже есть такая опция снимать атрибут, но снятие происходит после окончания архивации, соответственно та же проблема - нет гарантии что за это время файл не изменится.
e_v_g
 
Posts: 5
Joined: Fri, 23 Jul 2010, 12:11

Re: Инкрементный архив

Postby e_v_g » Wed, 18 Aug 2010, 14:41

Вот мой вариант, делает дифференциальный архив(на инкремент переделать не сложно) по дате изменения.
%time% в 00 часов выдает одну цифру 0, поэтому время вычисляю таким способом.
В дифф. архив могут попасть файлы которые уже записаны в полном, но это лучше чем их не записать вообще.
Данный спсособ не подходит, например, для архивирования файлов пользователей, они могут принести и скопировать файл и он попадет только в полный архив! В этом случае нужен архив по атрибуту архивный, rar снимает атрибут после архивации всех файлов, что плохо. NT Backup работает честно, снимает атрибут с файла после его добавления, но выковырять из него один файл не распоковывая все или если архив битый - без veritas backup не обойтись.

whatday.com(нашел как-то в интернете)- 8байт, можно сделать два скрипта и обойтись без нее.
на всякий случай ее код B4 2A CD 21 B4 4C CD 21

rem скрипт дифференциального резервного копирования
rem скрипт нельзя запускать в 00:00! но при необходимости это легко реализовать
rem в dbegin.cmd записывается дата/время создания полного архива
rem whatday.com возвращает в errorlevel день недели, вск-0, пон-1 итд.
rem в воскр. создается полный архив, в остальные дни дифф.
rem при создании дифф. берем дата/время полного и время уменьшаем на 1 мин
rem !!! не забывать что - Переменные, использующиеся в блоках then и else,
rem раскрываются перед началом выполнения этих блоков,
rem а не в процессе выполнения!!! Если вдруг кто чего добавит.

call whatday.com
if %errorlevel%==0 del /q dbegin.cmd
if exist dbegin.cmd goto m1
for /f "tokens=* usebackq" %%i in (`time /t`) do ( set dt=%%i)
echo set dt=%date% %dt%>dbegin.cmd
:m1
call dbegin.cmd
set dm=%dt:~14,2%
set dc=%dt:~11,2%
if %dm%==00 (
set dm=59
set /A dc=%dc%-1
) else (
set /A dm=%dm%-1
)
if %dc%==-1 set dc=23
rem если этот if сработает, то тут надо дописать кусок изменения даты на предыдущую
set db=%dt:~6,4%
set db=%db%%dt:~3,2%
set db=%db%%dt:~0,2%
set db=%db%%dc%%dm%
rem echo %db%
rem получаем - db=ГГГГММДДЧЧММ
call whatday.com
if %errorlevel%==0 (
rar a -r -ep2 -dh -ilog -inul -agDD.MM.YYYY d:\!Arch\base_=0=_.rar @mask.lst
) else (
rar a -r -ep2 -dh -ilog -inul -agDD.MM.YYYY -ta%db% d:\!Arch\base_=%errorlevel%=_.rar @mask.lst
)
e_v_g
 
Posts: 5
Joined: Fri, 23 Jul 2010, 12:11

Re: Инкрементный архив

Postby kolik76 » Mon, 28 Apr 2014, 07:50

Выдаётся ошибка в .ini файле
Code: Select all
D:\nnBackup>nnBackup.exe -f sync.txt
nnBackup. V 3.02b3 Build 147 2012-03-22 13:37
Copyright (C) 2001-2014 nnSoft. nemtsev@nncron.ru
Mo 28.Apr.2014 10:18 ERROR: Ошибка при загрузке конфиг. файла. Строка 0 (-2003 )

Параметры запуска
Code: Select all
nnbackup sync -i c:\Users\Admin\AppData\Roaming\Shareman\ -o "e:\Backup\Roaming\Shareman\" -ad -v -p - log "d:\Backup\Roaming\%DD%%MMM%%YYYY%.log""

Не могу понять в чем ошибка, разные параметры перепробовал. Хочу заставить backup работать с обновлением и добавлением файлов, сохраняя структуру каталогов. Может в файле backup.ini какие-то другие настройки выставить?
kolik76
 
Posts: 24
Joined: Wed, 08 May 2013, 13:52

Re: Инкрементный архив

Postby elos » Mon, 28 Apr 2014, 23:56

nnbackup sync -i c:\Users\Admin\AppData\Roaming\Shareman\ -o "e:\Backup\Roaming\Shareman\" -ad -v -p - log "d:\Backup\Roaming\%DD%%MMM%%YYYY%.log""

В конце лишняя кавычка, ну и путь источника заодно в кавычки заключи... (не тестировал)
elos
 
Posts: 665
Joined: Tue, 25 Apr 2006, 11:15

Re: Инкрементный архив

Postby kolik76 » Tue, 29 Apr 2014, 04:03

Сделал, такая же ошибка
kolik76
 
Posts: 24
Joined: Wed, 08 May 2013, 13:52

Re: Инкрементный архив

Postby elos » Tue, 29 Apr 2014, 10:20

Так должно работать - ты недосмотрел и в ключ логирования "попал" пробел.
Плюс, я добавил ключ для учёта вложенных папок -s ... А может ещё и -e надо?
И я бы употреблял %YYYY%%MM%%DD% для ежедневной многолетней синхронизации

sync.txt:
Code: Select all
sync
-i "c:\Users\Admin\AppData\Roaming\Shareman\"
-o "e:\Backup\Roaming\Shareman\"
-ad
-s
-v
-p
-log "d:\Backup\Roaming\%DD%%MMM%%YYYY%.log"

Ах, да! Каждый вопрос - своя тема. У тебя должна называться что-типа "Не вижу ошибку, помогите"... А то как-то не вяжется твоя синхронизация с названием текущей темы. Потом искать неудобно будет самому или другим людям.
elos
 
Posts: 665
Joined: Tue, 25 Apr 2006, 11:15

Re: Инкрементный архив

Postby kolik76 » Tue, 29 Apr 2014, 13:34

Спасибо, заработало. :D
kolik76
 
Posts: 24
Joined: Wed, 08 May 2013, 13:52


Return to nnBackup forum (Russian)

Who is online

Users browsing this forum: No registered users and 2 guests

cron