Как узнать причину ошибки при выполнении задания в APBackup с помощью внешнего архиватора. « AVPSoft.ru
Skip to content
 

Как узнать причину ошибки при выполнении задания в APBackup с помощью внешнего архиватора.

Программа для резервного копирования APBackup позволяет выполнять задания не только с использованием встроенного Zip64 архиватора, но и применяя большинство внешних архиваторов. Для подключения внешнего архиватора в APBackup необходимо настроить файл конфигурации внешнего архиватора (*.EMC). В дистрибутив APBackup уже входят файлы конфигураций для наиболее распространенных архиваторов: WinRar, WinZip, Arj, 7-Zip,…, но вы так же можете добавить файл конфигурации для любого другого архиватора. Как это сделать описано в документации на примере архиватора WinRar.

При выполнении задания с использованием внешнего архиватора APBackup формирует командную строку для вызова внешнего архиватора, основываясь на файле конфигурации, создает процесс для выполнения этой командной строки и ожидает его завершения. Выполнение архивации в данном случае считается успешным, если код возврата созданного процесс равен 0 и найден созданный архив после выполнения внешнего архиватора. Если же внешний архиватор вернул код отличный от 0, то задание заканчивается с ошибкой выполнения. К сожалению APBackup не может узнать причину ошибки, т.к. ошибка происходит в другом процессе. Как быть если необходимо узнать причину ошибки?

Рассмотрим на примере 7-zip как можно получить данные о произошедшей ошибке при выполнении внешнего архиватора. Данный способ можно использовать для любого консольного архиватора.

Попробуем перенаправить экранный вывод архиватора в лог файл для данного задания.
Например, командная строка, выполняемая в задании для внешнего архиватора:

"C:\Program files\7-zip\7z.EXE" u -t7z -r -y "d:\testRS2\SS101216.7z" @"d:\testRS2\SS101216.IFM" -mx=5

Для вывода сообщений архиватора в файл в конце данной строки необходимо добавить:

"C:\Program files\7-zip\7z.EXE" u -t7z -r -y "d:\testRS2\SS101216.7z" @"d:\testRS2\SS101216.IFM" -mx=5 > "d:\testRS2\SS101216.7z.7zlog"

Т.е. в данном случае вывод сообщений архиватора будет записан в файл «d:\testRS2\SS101216.7z.7zlog». Файл имеет имя создаваемого архива. Т.е. после выполнения внешнего архиватора рядом с архивом будет находиться файл с консольным выводом архиватора и в нем, при необходимости, можно будет посмотреть причину ошибки.

Реализуем эту возможность в APBackup.

Для начала создадим .bat файл, который мы будем вызывать вместо 7z.exe. В этом файле будет вызываться 7zip, и ему будут передаваться все параметры, которые были переданы .bat файлу.

7zip.bat
----------------------------------------
"c:\Program files\7-zip\7z.exe" %*

Теперь в APBackup создадим новый файл конфигурации на основе файла конфигурации для 7-ZIP (7-Zip.EMC). Через меню «Настройки — Настройка внешних архиваторов» (Preferences — Edit Configurations of External Archivers). Откроем файл 7-Zip.EMC и сохраним его с новым именем, например, 7ZipWLog.EMC.

Нам необходимо исправить только командную строку и строку параметров. В командную строку запишем путь до ранее созданного 7Zip.bat файла. К строке параметров добавим в конце:


> "[ArchiveName].7zlog"

В данном случае при выполнении задания макрос [ArchiveName] будет заменен именем создаваемого архива.

После сохранения файла конфигурации необходимо перезагрузить программу APBackup, что бы она добавила вновь созданный файл в список внешних архиваторов.

Теперь в любом задании можно выбрать внешний архиватор 7ZipWLog для выполнения задания, который будет создавать лог файл, имеющий имя созданного архива и расширение «7zlog»

Данный способ может быть использован для любого консольного внешнего архиватора

Ссылки по теме:

Использование внешних архиваторов в APBackup
Настройка внешних архиваторов в APBackup