![]() |
Резервное копирование
Собственно есть такой батник, который архивирует (с помощью 7z) нужные мне папки, затем подключает как сетевой диск нужную мне папку с nas-сервера и копирует архив туда (может как-то попроще можно? а то выглядит как костыль...)
Скрытый текст
echo off :START_COMPRESS ECHO started at %time%, %date% "C:\Program Files\7-Zip\7z.exe" a -y -ssw -t7z -mx5 "C:\register centr\backups\%date:~0,2%.7z" "C:\register centr\BASE" "C:\register centr\IN" "C:\register centr\OUT" ECHO done at %time%, %date% IF %errorlevel%==0 goto START_COPYING ELSE goto START_COMPRESS :START_COPYING net use p: \\backup\BACKUPS\Register_secretar copy "C:\register centr\backups\%date:~0,2%.7z" p:\ /Y net use p: /delete Вопросов несколько: 1. Как сделать так чтобы записать лог всего этого? Можно конечно сделать второй батник и его запускать вот так "D:\первыйбатник.bat">d:\log_%date%.txt но тогда во время работы самого батника (первого) ничего не будет визуально заметно, а там сам 7z пишет в командную строку прогресс архивирования в процентах, хотелось бы это видеть. 2. Какую кодировку нужно использовать (и что сделать чтобы ее "применить") чтобы стандартный виндовый (хр) блокнот нормально читал логи? Дело в том что некоторые архивируемые файлы имеют русские названия, соответственно кириллица превращается в кракозябры. 3. Суть батника в том что он каждый день будет создавать архивы 01.7z, 02.7z и т.д. по дням, и соответственно когда наступит первое число следующего месяца - нужно архив перезаписать. Это по дефолту делается или нужно указать какие-то дополнительные параметры? 4. Если присутствует "говнокод" - просьба на это указать, я пока учусь и соответственно хотелось бы учиться делать правильно а не абы работало :) |
3. Судя по ключу /Y архив перезапишет существующий при копировании. Больше можно ничего ничего не указывать.
2. 866 1. Что именно нужно логировать? Если достаточно времени/даты начала/завершения то это добавление нескольких ECHO в файл лога. например: Код:
ECHO started at %time%, %date% >>d:\log_%date%.txt Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Код:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Код:
@echo off Цитата:
|
Цитата:
Цитата:
А exit /b 0 зачем? После архивирования еще ж нужно в этом же батнике архив переместить на nas, а exit /b 0 заканчивает работу батник при %errorlevel%==0, насколько я понял из справки? Цитата:
|
Цитата:
Цитата:
Код:
"%ProgramFiles%\7-Zip\7z.exe" a -y -ssw -t7z -mx5 "\\backup\BACKUPS\Register_secretar\%date:~3,2%.7z" "%sConstPath%\BASE" "%sConstPath%\IN" "%sConstPath%\OUT2" || >>"BAD_log_%date%.txt" echo Error: !ErrorLevel! Цитата:
Цитата:
|
Цитата:
Лог только получается какой-то бесполезный. Изменил для теста путь чтоб архив писался на \\backup1 (такого устройства естественно нет) и изменил имя одной из архивируемых папок - в логе просто "Error: 2". А надо бы чтоб было всё это:
D:\>forum.bat
7-Zip 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 Scanning C:\register centr\OUT2: WARNING: Не удается найти указанный файл. Creating archive \\backup1\BACKUPS\Register_secretar\14.7z WARNINGS for files: C:\register centr\OUT2 : Не удается найти указанный файл. ---------------- WARNING: Cannot find 1 file Error: 7-Zip cannot open file \\backup1\BACKUPS\Register_secretar\14.7z Не найден сетевой путь. System error: Неопознанная ошибка |
Цитата:
Цитата:
Цитата:
Код:
>>"BAD_log_%date%.txt" "%ProgramFiles%\7-Zip\7z.exe" a -y -ssw -t7z … |
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Тогда вот так попробуйте (не проверялось):
Код:
@echo off Цитата:
|
В последних версиях 7-Zip появился новый ключ. Возможно это как-то поможет при разделении потоков вывода... :dont-know
Цитата:
|
Цитата:
Цитата:
Я ранее читал об этом (кстати, именно по Вашей ссылке из темы аддона), но пока не пробовал :). |
gora, т.е., если я правильно понял, чтобы записать в лог все ошибки нужно добавить ключ -bso2?
|
Charg, с такой командой:
Код:
7z a t1.7z "R:\1\*" -bso2 2>"log_%date%.txt" Если Вас это не устроит, то можете поэкспериментировать с ключами ибо описание их достаточно скупое. |
Цитата:
Пока что рабочий вариант выглядит вот так. Нужно будет поэксперементировать с этим новым ключем еще и комментарии расписать на всякий случай. Код:
@echo off |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Native Win32 ports of some GNU utilities Цитата:
|
Цитата:
Хотя конечно хотелось бы обойтись без лишних временных затрат. Признаться я очень удивлен что нельзя логировать всё происходящее в cmd =\ Раз так - вижу единственный вариант call script.bat >> log.txt (но так получится 2 окна консоли по идее) |
Цитата:
|
Время: 03:41. |
Время: 03:41.
© OSzone.net 2001-