Консольный бэкап файлов (упрощённый аналог nnbackup)

Предыдущая тема Следующая тема Перейти вниз

Консольный бэкап файлов (упрощённый аналог nnbackup)

Сообщение  valdimir в Вс Сен 22, 2013 3:23 pm

Одно время искал в интернете софт для бэкапа файлов, но с нужными мне функциями так и не нашёл. nnbackup - по моему перегружена функциями и как следствие сложна в настройке, кроме того, судя по отзывам подглючивает. Поэтому я решил написать такую прогу самостоятельно.
gbackup - упрощённый аналог  nnbackup. Возможности: обычное и инкрементное архивирование, синхронизация, поддержка архиваторов Winrar и 7zip. В инкрементном режиме и при синхронизации работает со списком файлов.
 Скриншот параметров: http://pixs.ru/showimage/81gif_3794287_14204398.gif


 Скачать отсюда: https://yadi.sk/d/oT_xQvGKdz8az
 Исходный код: https://yadi.sk/d/4LT9LPcI9gbcH
Описание:
  "gBackup" v8.3 для Windows x86 - утилита для создания бэкапов файлов.


             ОПИСАНИЕ.
Программа "gBackup.exe" служит для систематической архивации и синхронизации файлов. Работает из командной строки. Программа не архивирует заблокированные на чтение файлы (базы 1С и др.). Для автоматизации запуска нужно использовать сторонний планировщик. Имеет 4 режима работы: стек полных архивов, инкрементный (добавочный) стек, двухблочный инкрементный стек и зеркальная копия файлов. Стек подобно стопке книг, новая находится сверху. Стек состоит из пронумерованных архивных файлов/папок и имеет свой размер, при достижении которого самые старые элементы выталкиваются из него снизу.
Архивирование может происходить как с использованием программ-архиваторов, так и без них. Поддерживаются внешние компрессоры 7-zip и WinRar, так же программа может создать свой компрессор Uda, который несмотря на миниатюрный размер и крайне низкую скорость работы по степени сжатия превосходит 7-zip. Без указания в параметрах запуска программы имени архиватора (по умолчанию) будет происходить копирование файлов в стек архивных папок, с именами и индексами подобно архивам.
Запускать задание на архивацию нужно каждый раз с одинаковыми параметрами командной строки (но возможны некоторые изменения). Можно сгруппировать задания на архивацию в скрипт "имя.cmd" или "имя.bat" и запускать уже его по расписанию.
С помощью программы можно осуществить перенос только изменившихся файлов c одного компьютера на другой (требуется "gBackup.exe" и файл-список). Перед внесением изменений в исходные файлы необходимо выполнить архивацию без создания первого архива стека, при этом будет создан файл-список (режимы "-i/-zerkalo" + ключи "-s" +"-r/-k"). Время создания файла-списка будет являться точкой отсчёта. При последующей архивации в архив попадут все изменения, внесённые позже момента создания файла-списка. Если необходима информация об удалённых файлах, то нужно использовать ключ "-i".
Можно организовать перенос отличающихся файлов и другим способом, для этого нужно создать файл-список на компьютере с устаревшими файлами c использованием ключей: "-i/-zerkalo" + "-s" +"-r/-k". Папку вместе со списком перенести на компьютер с обновленными файлами и запустить процесс архивации с теми же параметрами в эту принесённую папку (прописать новые пути для "ИсходныйПуть" и "КонечныйПуть"). В результате изменённые файлы будут заархивированы в эту папку, а если использовался ключ  "-i", то и скрипт "Deleted.cmd" с информацией об удалённых файлах. После чего необходимо будет перенести и скопировать с заменой новые файлы в папку с устаревшими файлами и запустить скрипт "Deleted.cmd", если он есть.



ПАРАМЕТРЫ командной строки:
 gbackup  [ИсходныйПуть]  КонечныйПуть  [<Фильтры>...]  [<Режим>]  [<Ключи>]

ИсходныйПуть = исходная (архивируемая) папка, допускается указание маски имён файлов с подстановочными знаками "?" и "*". При наличии добавляющих фильтров ИсходныйПуть начинает исполнять роль общего пути для добавляющих фильтров.
КонечныйПуть = конечная папка, место расположения файлов архива; если папка расположения архивов не существует, то она будет создана. При отсутствии пути к папке используется текущий.
<Фильтры>
! [Путь] всех фильтров формируется относительно ИсходногоПути и является его продолжением (без начального слеша). Ключей с включающими добавлениями и с исключениями может быть много.
@<Файл-список> = @[Путь]ИмяФайла, если путь не указан, то будет использован Текущий. Кодировка файла Windows-1251. В файле содержится список фильтров. Записывается одна команда на строку, в начале строки слитно один из ключей: "dp/db/fp/fb/ik/ip/ib" без начальных (конечных) слешей и кавычек. Другие записи и пустые строки в файле игнорируются.
-dp<папка> - добавление папки, включая обработку подкаталогов: -dp[Путь]ИмяПапки/МаскаПапок.
-db<папка> - добавление папки, без обработки подкаталогов: -db[Путь]ИмяПапки/МаскаПапок.
-fp<файл> - добавление файла(ов), включая обработку подкаталогов: -fp[Путь]ИмяФайла/МаскаФайлов.
-fb<файл> - добавление файла(ов), без обработки подкаталогов: -fb[Путь]ИмяФайла/МаскаФайлов.
-ik<папка> - исключение папки: -ik[Путь]ИмяПапки/МаскаПапок.
-ip<файл> - исключение файла(ов), включая обработку подкаталогов: -ip[Путь]ИмяФайла/МаскаФайлов.
-ib<файл> - исключение файла(ов), без обработки подкаталогов: -ip[Путь]ИмяФайла/МаскаФайлов.
-rmax<Размер> - ограничение максимального допустимого размера файлов.
-rmin<Размер> - ограничение минимального допустимого размера файлов.
! Фильтры размера файлов действуют на все обрабатываемые файлы. Допускаются приставки к размеру: k (кило) - 10^3, m (мега) - 10^6, g (гига) - 10^9, t (тера) - 10^12, p (пета) - 10^15. Ключей может быть не более двух: с максимальным и минимальным ограничивающим размером.
<Режимы>
-i/-d/-zerkalo/-v - Инкрементный/Двухблочный инкрементный/Синхронизация/Восстановление из архивов (-n<номер> - номер восстанавливаемого архива).
При отсутствии ключей "-d", "-i", "-zerkalo" (режим по умолчанию) - будет создан стек Полных архивов.
-i - режим Инкрементный стек, будет создан стек инкрементных архивов, при заполнении которого первые два архива будут преобразовываться в один, а у остальных уменьшится индекс на 1; количество архивов в инкрементном стеке не менее 2-х, по умолчанию 9.
-d - режим Двухблочный Инкрементный стек. Будет создано два последовательных блока инкрементных архивов для ускорения сдвига в стеке (поблочный сдвиг осуществляется удалением 1-го блока и сдвигом 2-го на место 1-го после того, как 2-й блок будет заполнен), размер каждого блока равен установленному количеству архивов в стеке (ключ "-n<размер>"); количество архивов в двухблочном инкрементном стеке не менее 2-х, по умолчанию 9.
-zerkalo - режим синхронизации, создание зеркальной копии исходной папки/файла.
-v - восстановление файлов из созданных архивов; для восстановления файлов на другом компьютере необходимо нахождение в папке с архивами программы "gBackup.exe" и установленного в системе (либо рядом с программой) необходимого архиватора, в этом режиме параметр "-n<число>"  -  индекс восстанавливаемого архива. Так же указываются параметры, с которыми происходила архивация: имя архиватора и тип архивации (если был режим "-d", то в конце строки с параметрами прописывается ключ "-d<число>" со значением максимального количества архивов, установленное при архивации).
<Ключи>
 <Архиватор[Сжатие]> = -winrar/-rar/-7zg/-7z/-uda[1/2/3/4]
 <Архиватор> = имя архиватора (кроме режима "-zerkalo"): -winrar/-rar/-7zg/-7z/-uda, по умолчанию - режим копирования файлов.
  -winrar - WinRAR с графическим интерфейсом, должен быть установлен в Windows, расширение архивов: ".rar", ".zip", ".exe".
 -rar - консольный RAR, входит в состав установленного Winrar, расширение архивов: ".rar", ".exe"; если не в составе WinRAR то только ".rar".
 -7zg - 7ZIP с графическим интерфейсом, должен быть установлен в Windows, расширение архивов: "7z", "zip", "exe".
 -7z - консольный 7ZIP, входит в состав установленного 7ZIP, расширение архивов: ".7z", ".zip", ".exe"; если не в составе 7ZIP (7za.exe), то ".7z", ".zip".
 -uda - консольный UDA, создаётся программой (расширение архивов ".uda", ".exe").
 <Сжатие> = степень сжатия, число <1..4>, по умолчанию 1.
-? - вывод справки на эран.
-n<Размер стека> - количество архивов/папок в стеке (по умолчанию 9 для всех режимов) или номер, по который произойдёт восстановление из архива (в режиме восстановления файлов из архивов "-v").
 -ns<тип1;тип2;...> - не сжимать указанные типы (расширения) файлов архиваторами RAR и 7ZIP. Несжимаемые типы по умолчанию при этом будут заменены указанными. Пустой ключ удалит типы по умолчанию.
-o[файл] - создать Отчет [Путь][ИмяФайла], путь по умолчанию - папка расположения "gBackup.exe", имя файла отчёта по умолчанию - "gbackup.log". Можно использовать 7 таких ключей с указанием разных файлов для одновременного сохранения в них отчёта.
-r - сравнение исходных файлов с файлом-списком по размеру, по умолчанию - сравнение по времени (для режимов "-i/-d/-zerkalo").
-k - сравнение исходных файлов с файлом-списком по контрольной сумме, по умолчанию - сравнение по времени (для режимов "-i/-d/-zerkalo").
-z - формат архивов с расширениями  ".zip" (консольные архиваторы RAR и UDA не поддерживают формат ".zip").
-e - формат архивов с расширениями ".exe" (самораспаковывающиеся, поддерживается всеми архиваторами, кроме консольных RAR и 7ZIP, если они находятся в папке с программой), чтобы обойтись без программ - архиваторов при восстановлении файлов из архивов. Размер архива при этом не должен превышать 4ГБ.
-p - исключая обработку подкаталогов, распространяется только на ИсходныйПуть.
-s - при первом запуске архивации создать только список файлов (архив с индексом "1" не будет создаваться), если нужно фиксировать изменения только с этого момента (для режимов "-i/-d/-zerkalo"); при последующем запуске будет создан архив с номером 2 и т.д..
-f - фиксация полного архива в стеке и связанного с ним списка (режимы "-i/-d"). В режиме "-d" первый полный архив станет общим для обоих блоков, а место в стеке под второй полный архив останется пустым. В режиме "-i" при слиянии первых двух архивов, список, связанный с полным архивом будет удалён, так как больше не будет ему соответствовать. Можно включать/исключать ключ "-f" в уже ранее выполнявшееся задание на архивацию, после чего архивы начнут перестраиваться под выбранную конфигурацию. Этот режим поможет ускорить архивацию и сэкономить занимаемое место, если исходные файлы  незначительно изменяются с момента создания последнего полного архива.
-c - использовать промежуточное копирование (с архиваторами RAR/7ZIP). Исходные файлы будут скопированы во временную папку Widows, а затем сжаты в архив. При использовании архиватора UDA не зависимо от этого ключа всегда будет происходить промежуточное копирование. При использовании архиватора 7ZIP и архивации файлов из локальной сети, так же всегда будет включаться промежуточное копирование.

! Примечания: Параметр "ИсходныйПуть" должен следовать раньше, чем "КонечныйПуть", остальные параметры могут находиться в любом месте и порядке. Если путь в параметрах "ИсходныйПуть" или "КонечныйПуть" не указан, то будет использован текущий.


     ПРИМЕРЫ:      
1. gbackup C:\InFolder  D:\OutFolder  -d
Архивация всех файлов каталога "C:\InFolder", включая подкаталоги в папку хранения архивов "D:\OutFolder" в двухблочный инкрементный стек архивных папок из 18 элементов (по 9 на каждый блок).

2. gbackup.exe C:\InFolder  d:\OutFolder  -rar  -i
Архивация всех файлов каталога "C:\InFolder", включая подкаталоги в папку хранения архивов "D:\OutFolder" со сжатием консольным архиватором Rar со степенью сжатия "1" (по умолчанию) в стек инкрементных архивов из 9 элементов.

3. D:\Backup\gbackup  c:\Документы  D:\Архив  -7zg3 -nsUha;arj
Архивация всех файлов каталога "C:\Документы", включая подкаталоги в папку хранения архивов "D:\Архив" со сжатием архиватором 7-zip с графическим интерфейсом со степенью сжатия "3" в стек полных архивов из 9 элементов (по умолчанию). Типы файлов ".uha" и ".arj" будут добавляться в архив без сжатия.

4. gbackup  -7Z c:\InFolder  d:\backup  -fp*.txt  -ipсписок.txt -od:\backup\backup.log  -i  -z
Архивация всех файлов "*.txt" каталога "C:\InFolder" кроме файлов с именем "список.txt", включая подкаталоги в папку хранения архивов "D:\backup" со сжатием консольным архиватором 7-zip со степенью сжатия "1" в инкрементный стек zip-архивов из 9 элементов. Отчёт будет создан в файле "d:\backup\backup.log".

5. gbackup D:\OutFolder  D:\restore  -v  -i  -z  -7z
Восстановление файлов из инкрементных zip-архивов, содержащихся в папке "D:\OutFolder" в папку "D:\restore", с использованием консольного архиватора 7-zip. Извлечение файлов происходит последовательно из всех архивных файлов.

6. gbackup  -n11 C:\Исходная  -rar  "d:\Конечная папка"  -d -o -e -o"D:\Конечная папка"
Архивация всех файлов каталога "C:\Исходная", включая подкаталоги в папку хранения архивов "D:\Конечная папка" со сжатием консольным архиватором rar со степенью сжатия "1" в двухблочный инкрементный стек самораспаковывающихся архивов из 11 элементов. Файлы с отчётом "gbackup.log" будут находиться в папке "D:\Конечная папка" и в папке нахождения "gBackup.exe". В этом режиме количество архивов в стеке будет колебаться от 12 до 22 (2 блока по 11 архивов в каждом), причём 1-й и 12-й - это полные архивы, а остальные - инкрементные.

7. gbackup d:\OutFolder  d:\restore  -n14  -v  -e  -d11
Восстановление файлов из двухблочного инкрементного самораспаковывающегося архива, содержащегося в папке "D:\OutFolder" в папку "D:\restore". Восстановление происходит из архивных файлов с индексами: 12-го  полного и 13-го; 14-го инкрементных. Так как архивация происходила с максимально установленным количеством архивов - 11 (при архивации был параметр "-n11"), поэтому в конце строки параметров для восстановления указано: "-d11", для указания программе количества архивов в одном блоке стека.

8. D:\Backup\gbackup.exe  -n5  -Uda4  -e  -p  C:\InFolder  D:\OutFolder
Архивация всех файлов каталога "C:\InFolder" без подкаталогов в папку хранения архивов "D:\OutFolder" со сжатием консольным архиватором UDA со степенью сжатия "4" в стек полных самораспаковывающихся (.EXE) архивов из 5 элементов. Так как используется архиватор UDA, то файлы сначала будут скопированы в конечную папку, затем сжаты в архив, после чего удалены.

9. gbackup "C:\*.txt"  D:\rabota\arhiv  -ibreadme.txt  -ipr*s??e.*  -i
Архивация всех текстовых файлов диска "С:", включая подкаталоги в папку хранения архивов "D:\rabota\arhiv" без сжатия в стек инкрементных папок из 9 элементов. Будут исключены: файл  "readme.txt" в папке "c:\" и файлы соответствующие маске "r*s??e.*" во всех папках.

10. d:\Backup\gbackup "d:\upr?*.txt"  "D:\New 2"   -n6000  -WinRAR4  -i  -p  -z  -o  -r  -s
Архивация текстовых файлов диска "D:" по маске "upr?*.txt" без подкаталогов в папку хранения архивов "D:\New 2" в инкрементный стек из 6000 zip-архивов, созданный графическим архиватором WinRar с максимальным сжатием. Сравнение исходных файлов с файлом-списком происходит по размеру файлов. При первой архивации будет создан только список файлов, а при следующей архивации будет создан архив с номером "2" и т. д. до "6000". В папке с программой "gBackup.exe" будет создан файл "gbackup.log" с отчетом.

11. D:\Backup\gbackup  -n7  -v  -i  -e "D:\New 2"  D:\restore
Восстановление файлов из инкрементных самораспаковывающихся архивов содержащихся в папке "D:\New 2" в папку "D:\restore". Извлечение файлов происходит последовательно из архивных файлов с 1-го по 7-й включительно.

12. c:\gbackup.exe C:\Data\folder  d:\arhiv  -k  -p  -od:\arhiv\backup.log  -zerkalo
Будет выполнена зеркальная синхронизация папки "C:\Data\folder" без подкаталогов с папкой "D:\arhiv". Сравнение файлов из папки "folder" выполняется с файлом-списком находящимся в корне диска "D:" по контрольной сумме. В папке "D:\arhiv" будет создан отчет в файле "gbackup.log".

13. gbackup  -rmax1m  "C:\InFolder\*.txt"  D:\arhiv\OutFolder  -zerkalo  -rmin100
Будет выполнена зеркальная синхронизация текстовых файлов папки "C:\InFolder" включая подкаталоги с папкой "D:\arhiv\OutFolder".  В синхронизации не будут участвовать файлы, размер которых больше 1МБ и меньше 100 байт. Сравнение исходных файлов с файлом-списком будет выполнено по времени последней модификации.

14. gbackup C:\InFolder  D:\arhiv\OutFolder  @c:\list.txt  -zerkalo  -o  -k -rmin10k
 Содержимое файла "list.txt":
dpМузыка
fbработа\*.doc
Это коментарии  ...
dbДокументальное Видео\*.mp4
fp*.txt
ip*.jpg
ikмузыка\разное

- Будет выполнена зеркальная синхронизация папки "C:\InFolder\Музыка" включая подкаталоги с папкой "D:\arhiv\OutFolder\Музыка".
- Будет выполнена зеркальная синхронизация файлов "C:\InFolder\работа\*.doc" без подкаталогов с папкой "D:\arhiv\OutFolder\работа".
- Будет выполнена зеркальная синхронизация файлов "*.mp4" папки "C:\InFolder\Документальное Видео" без подкаталогов с папкой "D:\arhiv\OutFolder\Документальное Видео".
- Будет выполнена зеркальная синхронизация текстовых файлов папки "C:\InFolder" включая подкаталоги с папкой "D:\arhiv\OutFolder".
- Будут исключены все файлы "*.jpg" из всех папок.
- Будет исключена из обработки папка  "C:\InFolder\Музыка\разное".
- Будут исключены из всего списка обработки файлы, размер которых меньше 10КБ .
Сравнение всех исходных файлов с файлом-списком будет выполнено по контрольной сумме. В папке с программой "gBackup.exe" будет создан отчет в файле "gbackup.log".

15. D:\Backup\gbackup "D:\New 2\*.xls"  D:\Arhiv  -n7  -fp*.txt  -fpРазное\*.doc  -fbОтчёты\отчёт.xls  -7z3  -n99  -d -e -p
Архивация всех файлов с расширением "xls" из папки "D:\New 2" без подкаталогов. Архивация всех файлов "*.txt" из папки "D:\New 2" включая подкаталоги. Архивация всех файлов "*.doc" из папки "D:\New 2\Разное" с подкаталогами. Архивация файла из папки "D:\New 2\Отчёты\отчёт.xls" без подкаталогов. Будет создан двухблочный инкрементный стек самораспаковывающихся архивов в папке "D:\Arhiv", сжатых консольным архиватором 7-zip со степенью сжатия 3 и максимальным количеством архивов в каждом блоке 99. Количество архивов в стеке при этом будет не менее 100.


            Режим СТЕК ПОЛНЫХ АРХИВОВ.
В этом режиме каждый раз создается полный архив исходных файлов, что требует больше дискового пространства, по сравнению с инкрементными режимами. Архивация может происходить как с использованием программ-компрессоров в стек нумерованных архивных файлов, так и без них - копированием в стек нумерованных папок. Стек архивных файлов/папок начинается с индекса 1 (arhiv_1) и заканчивается числом, установленным в параметрах запуска программы, по умолчанию 9.
При достижении максимального значения количества архивов происходит сдвиг в стеке: архив с индексом 1 удаляется, индекс остальных архивов уменьшается на 1, а новый архив занимает последнее освободившееся место.
Ключи [-r, -k, -s, -f] в этом режиме не используются и список файлов не создаётся. В случае, если используется сжатие и новый архивный файл получился такой же, как и последний в списке, то он удаляется и в стеке изменений не происходит.


            Режим ИНКРЕМЕНТНЫЙ (добавочный) СТЕК.
В этом режиме сначала создается полный архив исходной папки, затем каждый последующий создаваемый архив содержит только новые или изменившиеся файлы, а так же информацию об удалённых файлах с момента последней архивации. Этот режим позволяет значительно сократить общий размер архивов по сравнению с режимом полных архивов. При первой архивации в папке с архивами создаётся скрипт "Restore.cmd" для автоматизации процесса восстановления файлов из архивов. Вместе с архивами хранится файл-список, содержащий информацию о текущем состоянии файлов в архиве. С помощью него и происходит сравнение файлов в архиве с исходными файлами. Имена файлов/папок в архивном стеке создаются по следующему принципу: первый полный архив имеет имя "arhiv_1", а каждый последующий имеет индекс на 1 больше предыдущего. В параметрах программы устанавливается максимальное количество архивов в стеке (по умолчанию 9), однако это количество для инкрементного режима не может быть меньше 2-х . По достижению установленного количества архивов происходит слияние архива с индексом 1 и архива с индексом 2. Объединенный архив получает индекс 1, а место под архив с индексом 2 остаётся свободным. Далее происходит сдвиг в стеке: уменьшение на 1 индексов всех архивов, кроме 1-го. А новый архив получает максимальный (освободившийся) индекс и находится в конце стека. Таким образом архив с индексом 1 при каждом слиянии будет содержать суммарную информацию разных архивов, а остальные архивы с индексом больше 1 будут содержать информацию только за один процесс архивации, чем и можно обеспечить в последствии откат на момент времени создания любого из этих архивов. Если при запуске архивации никаких изменений исходных файлов не произошло с момента последней архивации, то новый архив не будет создаваться. Если количество архивных файлов/папок не достигло установленного максимального значения и не предполагается сдвиг в стеке, то эти архивы можно переместить в другое место, а в конечной папке хранить только файл-список, можно так же не создавать полный архив при первой архивации, указав ключ "-s", если нужны только последующие изменения.


            Режим ДВУХБЛОЧНЫЙ ИНКРЕМЕНТНЫЙ СТЕК.
Этот режим отличается от Инкрементного тем, что он состоит из 2-х последовательных блоков инкрементных архивов, с возможностью последующего быстрого сдвига (ротации) в стеке целого блока архивов. Каждый блок начинается с полного архива и продолжается инкрементными. Размер обоих блоков равен максимально установленному значению количества архивов в параметрах командной строки запуска. Когда 2-й блок будет заполнен, то произойдёт сдвиг блоков в стеке: 1-й блок будет удалён, 2-й переместится на место 1-го, после чего будет создан новый полный архив, с которого начнётся новый 2-й блок. Таким образом место, занимаемое архивами будет в 2 раза больше, чем в Инкрементном режиме, но так как не происходит слияний архивов и перепаковки (если используется сжатие), то архивация будет происходить существенно быстрее, чем в простом инкрементном стеке. Количество архивных файлов (точек восстановления) будет не менее максимально установленного количества архивов. Устанавливаемое количество архивов в этом режиме не менее 2-х, по умолчанию - 9.
Если установлен ключ "-f", то у обоих блоков будет один общий полный (фиксированный) архив, а обновляться будут только инкрементные, что позволит ускорить процесс архивации и уменьшить занимаемое архивами место. Для принудительного обновления полного архива в этом режиме нужно удалить файл-список с расширением ".fik" в конечной папке. Можно включать/исключать ключ "-f" в уже ранее выполнявшееся задание на архивацию, после чего архивы будут перестраиваться в соответствии с новыми параметрами.


            Режим ЗЕРКАЛЬНАЯ КОПИЯ.
В этом режиме происходит создание в конечной папке точной копии исходной. Как и при инкрементном архивировании создается файл-список имён исходных файлов (рядом с конечной папкой) для последующего сравнения. В качестве конечного пути не допускается указание буквы диска (должна быть папка). Поддерживаются ключи:  [-r, -k, -o, -p, -s].


            Режим ВОССТАНОВЛЕНИЯ из архивов.
Восстановить (извлечь) файлы из архивов можно 3-мя способами: с помощью скрипта "Restore.cmd", вручную (распаковывать и копировать файлы) или из командной строки с помощью программы gBackup.exe, задав необходимые параметры.

     Восстановление файлов из Инкрементного Архива с помощью скрипта "Restore.cmd":
Для автоматизации процесса восстановления файлов из архивов программа создает в папке с архивами скрипт "Restore.cmd", после запуска которого нужно указать только номер архива (с нужной датой создания из свойств файла/папки) для извлечения. Если в качестве номера восстанавливаемого архива ввести "0", то будет выбран последний номер архива. При необходимости можно указать и путь для восстановления, а по умолчанию будет создана папка с именем текущей рядом с архивами. Скрипту в качестве параметра командной строки можно передать путь (если с пробелами, то нужно заключить в кавычки) для указания места извлечения архивов, при этом в качестве номера архива будет использоваться значение "0", то есть распаковка всех архивов. Для восстановления из архивных файлов на другом компьютере необходимо нахождение программы "gBackup.exe" в папке с архивами и если архивация была со сжатием, то нужен архиватор, которым создавались архивы (кроме самораспаковывающихся архивов). Архиваторы Winrar и 7-zip при отсутствии основного в системе могут быть замещены друг другом. Cкрипт "Restore.cmd" для каждого процесса архивации создаётся свой, поэтому они не взаимозаменяемы. Если некоторые архивы/папки отсутствуют (не считая 1-й), то чтобы процесс не прервался,  в качестве номера архива для восстановления нельзя указывать "0". При восстановлении из самораспаковывающихся архивов, архив сначала перемещается в конечную папку, в ней распаковывается и затем перемещается обратно. Поэтому лучше, чтобы этот процесс происходил в пределах одного диска (перемещение файла мгновенное), иначе дело затянется копированием архивных файлов на другой диск.

     Восстановление файлов из Инкрементного Архива с помощью командной строки:
В качестве исходного пути указываем папку нахождения архивных файлов, а в качестве конечной указываем место будущего размещения восстановленных файлов. Если указать конечную папку ту же, что и исходная, то в ней будет создана папка с именем текущей, которая и будет являться конечным путём. Ключ "-v" - режим восстановления, "-n<число>" - индекс архивного файла для восстановления (включая предшествующие), если указать "0", то произойдёт восстановление из всех архивов. В режиме Двухблочный Инкрементный Стек в параметрах командной строки указывается дополнительно ключ "-d<число>", где число - максимально установленное количество архивов в стеке при архивации (например: "-d7", если при архивации был ключ "-n7"). Ключи [<Архиватор>,  -i, -e, -z ] указываются те же, что были при архивации. Ключи [-p, -r, -k, -ns, -o, -s, - f, -c] в режиме восстановления не используются.

      Ручное восстановление файлов из Инкрементного Архива:
1. Создаем конечную папку, в которую будем восстанавливать архивы.
2. Если было сжатие файлов, распаковываем первый архив "arhiv_1" в одноимённую папку (без сжатия эта папка уже есть).
3. Копируем содержимое папки "arhiv_1" в конечную папку.
4. Если было сжатие файлов, распаковываем следующий архив в одноимённую папку (без сжатия эта папка уже есть).
5. Копируем с заменой файлов содержимое этой папки в конечную папку.
6. В конечной папке запускаем скрипт "Deleted.cmd" (если он есть).
7. Повторяем пункты 4, 5, 6 до достижения архива с требуемой датой восстановления (дату и время создания всех архивных файлов/папок можно узнать по их свойствам).
8. В конечной папке удаляем скрипт "Deleted.cmd" (если он есть).

      Ручное восстановление файлов из Двухблочного Инкрементного Архива:
-Если нужный индекс архива, из которого будем восстанавливать файлы равен максимально установленному количеству архивов при архивации, то этот архив является полным и просто распаковываем его в нужное место или копируем папку, если режим без сжатия.
-Если  нужный индекс архива, из которого будем восстанавливать файлы меньше максимально установленного количества архивов, то восстановление из него такое же, как и инкрементного.
-Если  нужный индекс архива, из которого будем восстанавливать файлы больше максимально установленного количества архивов, то восстановление из него такое же, как и инкрементного, только начинаем восстановление не с 1-го , а архива (полного) с индексом максимально установленного количества архивов при архивации. Если полный архив второго блока отсутствует, то вместо него нужно использовать полный архив первого блока.

      Ручное восстановление файлов из Стека Полных Архивов:
1. Создаем конечную папку, в которую будем восстанавливать архив.
2. Если было сжатие файлов, то распаковываем, а без сжатия копируем полный архив с требуемой датой в эту папку.


      ФАЙЛ - СПИСОК.
Во всех режимах, кроме режима "Стек Полных Архивов" в папке с архивами (в режиме "-zerkalo" рядом с конечной папкой) создаётся файл-список, в котором хранится перечень файлов в архиве и их параметры.
Существуют 3 типа файлов-списков: в режиме сравнения файлов по времени создаётся файл-список с расширением "spv"; по размеру - "spr"; по контрольной сумме - "spk".
Первый - самый не точный, зато быстрый. Его можно использовать, если исходные файлы при их изменении могут менять свой размер только в одну сторону, например увеличение, либо редактирование файлов маловероятно, например фильмы, музыка, фото, установочные файлы программ и т.д..
Второй режим более точный и почти такой же быстрый, но бывают случаи, когда из-за смены часового пояса в системе, переустановке Windows или при работе с разными файловыми системами, например FAT32 и NTFS происходит сбой времени изменения файла и одинаковые файлы принимаются за различные. Но такое происходит не часто Smile.
И третий режим сравнения является самым точным, так как файлы сравниваются по содержимому посредством контрольной суммы. Алгоритм вычисления контрольной суммы выбран максимально простой и быстрый, тем не менее приходится читать полностью все исходные файлы и сравнивать их с файлом-списком, что требует дополнительного времени.
Во всех файлах-списках хранится информация о размере файлов, которая всегда учитывается при сравнении файлов с файлом-списком.
Номер последнего архива в папке записан в первой строке файла-списка. Он будет использован при создании следующего архива в режимах "-i", "-d". В режиме "-zerkalo" в начале файла-списка хранится число, отображающее количество выполненных (были изменения) синхронизаций.
При использовании ключа "-f", создаётся дополнительный список с расширением ".fik" который связан с фиксированным полным архивом.
Можно изменить метод сравнения файлов ранее созданного (уже выполнявшегося) процесса архивации. Для этого нужно изменить метод сравнения в параметрах командной строки запуска программы (ключи "-r", "-k", " ") и запустить снова процесс архивации. В результате запуска программы с изменённым параметром, сравнение файлов с файлом-списком произойдет только по размеру файлов. Далее процесс архивации будет проходить в соответствии с новым методом сравнения файлов.


    Работа программы с АРХИВАТОРАМИ.
Для ускорения процесса создания бэкапа архиваторы "Winrar", "Rar", "7zG", "7z" при степени сжатия "1" и "2" добавляют в архив файлы без сжатия со следующими расширениями: "rar; 7z; uda; zip; cab; msi; png; jpg; jpeg; gif; mp3; wma; pdf; djvu; chm; xlsx; docx; mp4; avi; mkv; vob; mpg; mpeg; wmv; 3gp; flv; iflv; mov; ts", а при степени сжатия "3" добавляют без сжатия только файлы с расширениями "rar; 7z; uda", если не указано иное ключом "-ns". Приоритет программ  "Winrar.exe" и "Rar.exe" устанавливается низкий.
Для создания архивов "*.uda" программа создаёт файл консольного архиватора "Uda.exe" v 0.261 в своей папке и использует его как для создания архивов, так и для их распаковки. Архивы "*.uda" можно распаковать так же архиватором с графическим интерфейсом WinUda v 0.271.
В режиме архивации при отсутствии архиватора "WinRar" в системе можно скопировать файл "Rar.exe" в папку нахождения "gBackup.exe" и программа подхватит его для архивации. В режиме архивации при отсутствии архиватора "7-zip" в системе можно скопировать файл "7za.exe" либо "7z.exe" + "7z.dll" в папку нахождения "gBackup.exe" и программа подхватит их для архивации. В этих случаях нельзя будет создать самораспаковывающиеся "*.exe" архивы.
В режиме восстановления если в системе отсутствует нужный архиватор, то он будет автоматически замещен другим: 7-zip <-> WinRar. В режиме восстановления из Rar-архива при отсутствии архиватора "WinRar" или "7-zip" в системе можно скопировать файл "Rar.exe" или "UnRAR.exe" либо "7z.exe" + "7z.dll"  в папку нахождения "gBackup.exe" и программа подхватит их для распаковки архивов. В режиме восстановления из 7-zip архива при отсутствии архиватора "WinRar" или "7-zip" в системе можно скопировать файл "7za.exe" либо "7z.exe" + "7z.dll"  в папку нахождения "gBackup.exe" и программа подхватит их для распаковки архивов.
Если в параметрах "gBackup.exe" выбран консольный архиватор "7-zip" или "Rar" (установлен ключ "-7z" или "-rar" и отсутствует ключ "-e") и в папке с программой есть файл архиватора "7za.exe" или "Rar.exe", то для архивации будет использован именно он.
Если архивация происходит в формат "Rar", то в именах архивируемых файлов не должно быть символов "№" и "»".
При каждом создании архива со сжатием архиватором UDA, новые и изменившиеся файлы сначала копируются во временную папку Widows, а затем сжимаются архиватором не зависимо от ключа "-c". Такой порядок работы необходим для возможности фильтрации файлов.
При использовании архиватора 7ZIP и архивации файлов из локальной сети, так же всегда будет включаться промежуточное копирование, для избежания создания временных файлов архиватором в исходной папке локальной сети.
Если в качестве ИсходногоПути указано только имя сетевого компьютера (без дополнительного пути), то автоматически включается режим промежуточного копирования, так как имя компьютера нельзя сделать текущей папкой.



            ОСОБЕННОСТИ работы программы и возможные ошибки.
Если в параметрах командной строки  присутствуют пробелы или подстановочные знаки "?", "*"  в параметре ИсходныйПуть, то параметр должен быть заключён в кавычки. Заключённый в кавычки путь не должен заканчиваться символом "\", иначе произойдёт сбой.
Если скрипт "имя.cmd" или "имя.bat" запуска архивации содержит символы кириллицы, то кодировка этого скрипта должна быть DOS-866, либо в начале скрипта должна быть команда "chcp 1251 > nul".
Архивация по локальной сети выполняется  программой медленнее, чем в пределах одного компьютера.
В уже выполнявшемся задании архивации нельзя менять часть параметров, чтобы в конечной папке не оказались архивы с разными расширениями или режимами архивации. Изменить в параметрах можно степень сжатия архиватора, обработку подкаталогов, маску файлов и наличие отчёта. Если тип создаваемых архивов при архивации "*.exe" (самораспаковывающиеся архивы), то в процессе можно поменять в параметрах командной строки ещё и имя архиватора (расширение архивов при этом не изменится), аналогично и с расширением ".zip". Можно переделать инкрементный архив в двухблочный инкрементный, для этого меняем в командной строке ключ "-i" на "-d" и устанавливаем размер стека архивов ключ "-n<размер>" не меньше, чем количество уже созданных архивов в конечной папке, но это число должно иметь такое же количество цифровых знаков, какое в именах уже созданных архивов (не забываем, что потолок количества архивов будет в 2 раза выше установленного), затем удаляем скрипт "Restore.cmd" - программа создаст новый.
Программа имеет код возврата по окончании своей работы: 0 - удачно, 1 - произошла ошибка. При архивации  атрибуты папок теряются.
Чтобы скрыть окно консоли при запуске скрипта запуска "имя.cmd" архивации можно запустить его через Visual Basic скрипт "имя.vbs" следующего содержания:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "путь\имя.cmd", 0, true

valdimir

Сообщения : 44
Дата регистрации : 2008-10-11
Откуда : Калининградская обл.

Посмотреть профиль

Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения