Лучший отвечающий
BATник для архивации данных

Вопрос
-
Помогите написать batник...
Надо автоматизировать процесс архивирования:
Встренный планировшик не подходит, т.к. по разному должен выполнятся архивация.
значит задача такая:
Есть папка 777, которая находится в C:\Base
при запуске BAT-ника должен архивироватся 777 папка и хранится в папке D:\rezerv. Имя файла желательно чтоб совпал с датой архивацией.P.S. ОС, на котором должен выполнится BAT файл - WIND XP sp2 Home edition
22 августа 2008 г. 6:36
Ответы
-
Попробуйте в батнике:
ntbackup backup "C:\Base\777" /f "D:\rezerv\%date%.bkf"
22 августа 2008 г. 9:15Модератор -
> Для знающего человека понятен, о чем идет речь.
Это когда внятно спрашивают.
> имеется еще папка 555, которая тоже находится в C:\Base и надо, чтоб при запуске батника он тоже бэкапился в папку D:\rezerv\555как будет выглядеть тогда сценарий ?
Просто еще одна команда. 555 тоже должна иметь дату для архива?
@echo off
ntbackup backup "C:\Base\777" /f "D:\rezerv\%date%.bkf"
ntbackup backup "C:\Base\555" /f "D:\rezerv\555\%date%.bkf"22 августа 2008 г. 12:36 -
Krec написано: Ну да, ясное дело, что лучше локально копировать.. но мне надо автоматизировать этот процесс.
За этим компом, где надо бекапить данные - сидят всякие девушки, aka Глав.Бух. и я уверен, что они не будут ручную копировать локальные данные в сеть !! по этому надо и это автоматизировать и желательно все "повестить" в одном BAT_нике.
Ну так автоматизируйте всё в одном батнике. Не вижу проблемы:
Code Snippet@echo off
ntbackup backup "C:\Base\777" /f "D:\rezerv\%date%.bkf"
ntbackup backup "C:\Base\555" /f "D:\rezerv\555\%date%.bkf"
if exist D:\rezerv\%date%.bkf. (xcopy D:\rezerv\%date%.bkf \\192.168.1.5\rezerv\%date%.bkf. /v /r /o /-y )if exist D:\rezerv\555\%date%.bkf. (xcopy D:\rezerv\555\%date%.bkf \\192.168.1.5\rezerv\555\%date%.bkf. /v /r /o /-y)
этим методом вы решаете 2 задачи:
1)если по каким-то причинам отсутствует сеть или во время копирования у вас будут проблемы с сетью, то хотя бы одна копия бэкапа у вас уже будет! Если копировать сразу в сеть, то при сбое в сети у вас ничего не будет.
2)избавляетесь от фрагментации при копировании в сеть (правда, локально сохранится). Дело в том, что при архивировании сразу в сеть итоговый размер файла неизвестен, поэтому на сервере будут выделяться произвольные участки места из-за чего будет катастрофически будет расти фрагментация. Если копировать сначала локально, а потом в сеть, то размер архива известен и сервер будет по возможности выделять целые участки места.
Если же после бакупа локальные копии не нужны, то делается так:
Code Snippet@echo off
ntbackup backup "C:\Base\777" /f "D:\rezerv\%date%.bkf"
ntbackup backup "C:\Base\555" /f "D:\rezerv\555\%date%.bkf"
if exist D:\rezerv\%date%.bkf. (xcopy D:\rezerv\%date%.bkf \\192.168.1.5\rezerv\%date%.bkf. /v /r /o /-yIf exist \\192.168.1.5\rezerv\%date%.bkf. (del D:\rezerv\%date%.bkf. /f /q))
if exist D:\rezerv\555\%date%.bkf. (xcopy D:\rezerv\555\%date%.bkf \\192.168.1.5\rezerv\555\%date%.bkf. /v /r /o /-y
If exist \\192.168.1.5\rezerv\555\%date%.bkf. (del D:\rezerv\555\%date%.bkf. /f /q))
В данном случае делается архив локально. Далее проверяется, что он сделан (условно, т.к. наличие файла архива ещё не означает, что архив создан правильно) и если это так, то копируется в сеть. После проверяется, что архив успешно скопирован в сеть (опять же условно, т.к. при кратковременном обрыве сети копирование прекратится, но на сервере будет кусок архива с именем) и если это так, то удаляется локальная копия.
з.ы. если посмотреть мою подпись, то можно сделать вывод, что я что-то смыслю в бакупах не по наслышке
25 августа 2008 г. 11:36
Все ответы
-
22 августа 2008 г. 7:26
-
Думаю нет, т.к. мне надо это сценарие выполнить на WIND XP sp2 Home
22 августа 2008 г. 8:16 -
Какой архиватор наверное надо догадаться, любой имеет встроенную справку...
И совсем не ясно по поводу планировщика.22 августа 2008 г. 8:31 -
какой архиватор? я про архиватора ничего не написал. мне BACKUP надо делать !!!
А насчет планировшика - забудьте !
Мне надо с определенного места бэкапить файлы в другую папку.
22 августа 2008 г. 9:07 -
Попробуйте в батнике:
ntbackup backup "C:\Base\777" /f "D:\rezerv\%date%.bkf"
22 августа 2008 г. 9:15Модератор -
Спасибо! это то, что мне надо !
22 августа 2008 г. 9:45 -
Вот и пойми тут...
> "Надо автоматизировать процесс архивирования:"
> какой архиватор? я про архиватора ничего не написал. мне BACKUP надо делать !!!
> Встренный планировшик не подходит, т.к. по разному должен выполнятся архивация.
> А насчет планировшика - забудьте !
"...ну там еще дом с пальмой" (ц)22 августа 2008 г. 10:30 -
Dmitry Alifatov
А можно 2 процесс совмешать? т.е.
Есть папка 777, которая находится в C:\Base
при запуске BAT-ника должен архивироватся 777 папка и хранится в папке D:\rezerv. Имя файла желательно чтоб совпал с датой архивацией.имеется еще папка 555, которая тоже находится в C:\Base и надо, чтоб при запуске батника он тоже бэкапился в папку D:\rezerv\555
как будет выглядеть тогда сценарий ?
Для знающего человека понятен, о чем идет речь.
----------
22 августа 2008 г. 12:00 -
> Для знающего человека понятен, о чем идет речь.
Это когда внятно спрашивают.
> имеется еще папка 555, которая тоже находится в C:\Base и надо, чтоб при запуске батника он тоже бэкапился в папку D:\rezerv\555как будет выглядеть тогда сценарий ?
Просто еще одна команда. 555 тоже должна иметь дату для архива?
@echo off
ntbackup backup "C:\Base\777" /f "D:\rezerv\%date%.bkf"
ntbackup backup "C:\Base\555" /f "D:\rezerv\555\%date%.bkf"22 августа 2008 г. 12:36 -
Народ, а можно место локального адреса писать сетевой адрес?
т.е. хочу БЭКАП хранить в другом компе, по адресу 192.168.1.5 (есть там расшаренная папка rezerv). можно так:?!
@echo off
ntbackup backup "C:\Base\777" /f "\\192.168.1.5\rezerv\%date%.bkf"
ntbackup backup "C:\Base\555" /f \\192.168.1.5\rezerv\555\%date%.bkf"25 августа 2008 г. 8:00 -
можно, но не нужно. Сначала нужно выполнить копию локально, а потом эту копию копировать в сеть.
25 августа 2008 г. 8:04 -
Ну да, ясное дело, что лучше локально копировать.. но мне надо автоматизировать этот процесс.
За этим компом, где надо бекапить данные - сидят всякие девушки, aka Глав.Бух. и я уверен, что они не будут ручную копировать локальные данные в сеть !! по этому надо и это автоматизировать и желательно все "повестить" в одном BAT_нике.
25 августа 2008 г. 10:42 -
Krec написано: Ну да, ясное дело, что лучше локально копировать.. но мне надо автоматизировать этот процесс.
За этим компом, где надо бекапить данные - сидят всякие девушки, aka Глав.Бух. и я уверен, что они не будут ручную копировать локальные данные в сеть !! по этому надо и это автоматизировать и желательно все "повестить" в одном BAT_нике.
Ну так автоматизируйте всё в одном батнике. Не вижу проблемы:
Code Snippet@echo off
ntbackup backup "C:\Base\777" /f "D:\rezerv\%date%.bkf"
ntbackup backup "C:\Base\555" /f "D:\rezerv\555\%date%.bkf"
if exist D:\rezerv\%date%.bkf. (xcopy D:\rezerv\%date%.bkf \\192.168.1.5\rezerv\%date%.bkf. /v /r /o /-y )if exist D:\rezerv\555\%date%.bkf. (xcopy D:\rezerv\555\%date%.bkf \\192.168.1.5\rezerv\555\%date%.bkf. /v /r /o /-y)
этим методом вы решаете 2 задачи:
1)если по каким-то причинам отсутствует сеть или во время копирования у вас будут проблемы с сетью, то хотя бы одна копия бэкапа у вас уже будет! Если копировать сразу в сеть, то при сбое в сети у вас ничего не будет.
2)избавляетесь от фрагментации при копировании в сеть (правда, локально сохранится). Дело в том, что при архивировании сразу в сеть итоговый размер файла неизвестен, поэтому на сервере будут выделяться произвольные участки места из-за чего будет катастрофически будет расти фрагментация. Если копировать сначала локально, а потом в сеть, то размер архива известен и сервер будет по возможности выделять целые участки места.
Если же после бакупа локальные копии не нужны, то делается так:
Code Snippet@echo off
ntbackup backup "C:\Base\777" /f "D:\rezerv\%date%.bkf"
ntbackup backup "C:\Base\555" /f "D:\rezerv\555\%date%.bkf"
if exist D:\rezerv\%date%.bkf. (xcopy D:\rezerv\%date%.bkf \\192.168.1.5\rezerv\%date%.bkf. /v /r /o /-yIf exist \\192.168.1.5\rezerv\%date%.bkf. (del D:\rezerv\%date%.bkf. /f /q))
if exist D:\rezerv\555\%date%.bkf. (xcopy D:\rezerv\555\%date%.bkf \\192.168.1.5\rezerv\555\%date%.bkf. /v /r /o /-y
If exist \\192.168.1.5\rezerv\555\%date%.bkf. (del D:\rezerv\555\%date%.bkf. /f /q))
В данном случае делается архив локально. Далее проверяется, что он сделан (условно, т.к. наличие файла архива ещё не означает, что архив создан правильно) и если это так, то копируется в сеть. После проверяется, что архив успешно скопирован в сеть (опять же условно, т.к. при кратковременном обрыве сети копирование прекратится, но на сервере будет кусок архива с именем) и если это так, то удаляется локальная копия.
з.ы. если посмотреть мою подпись, то можно сделать вывод, что я что-то смыслю в бакупах не по наслышке
25 августа 2008 г. 11:36
Спасибо, все гениально и так, как надо ! вот вечером тестировал и все ОК ! только один момент мне не понравилась... когда уже выполняется 2-я часть скрипта, т.е. когда пытается отправить по сети файлы бекапа, то в командном строке спрашивает типа: Что значит файл [локальный путь к файлу]/имя файла, если это файл, то нажмите F, если это каталог, то набмите D
Как делать так, чтоб он автоматом выполнился с ключем F ? а то не удобно каждый раз ждать, пока дойдет до этого и нажать F
P.S. И вообше интересно, что за оператор @echo off ? Вроде и без него работает... Это лично в моих интересах
Krec написано: | |
|
@echo on - включает вывод исполняемых команд на экран
@echo off - отключает вывод исполняемых команд на экран
т.е. самих команд вы не видите, только результат их выполнения.
Что касается вопроса при копировании, то скорее всего вам нужно попробовать сделать вот так:
@echo off If exist \\192.168.1.5\rezerv\%date%.bkf. (del D:\rezerv\%date%.bkf. /f /q)) if exist D:\rezerv\555\%date%.bkf. (xcopy D:\rezerv\555\%date%.bkf \\192.168.1.5\rezerv\555. /v /-y If exist \\192.168.1.5\rezerv\555\%date%.bkf. (del D:\rezerv\555\%date%.bkf. /f /q))
ntbackup backup "C:\Base\777" /f "D:\rezerv\%date%.bkf"
ntbackup backup "C:\Base\555" /f "D:\rezerv\555\%date%.bkf"
if exist D:\rezerv\%date%.bkf. (xcopy D:\rezerv\%date%.bkf \\192.168.1.5\rezerv. /v /-y
Полагаю, что при таком варианте ничего не должен спрашивать.
з.ы. сейчас уже не помню как там точно было, но не лишним будет создание заранее необходимых папок в пути назначения. Т.е. чтобы весь путь уже существовал.