Показать полную графическую версию : Скрипт резервного копирования папок
Тема наверное изъезженная, но все-таки прошу помощи!
Добрый день, срочно встала задача настроить резервное копирование 2х папок с содержимым, с сервера библиотеки на другой ПК по ЛВС. Я не программист( Сталкиваюсь с этим в 1й раз. Скрипты ни разу не приходилось писать и что это, знаю к сожалению только в теории=( Нашел книгу: "Скрипты для администратора Windows" и разные статьи по скриптам, но время до конца недели, не успеваю вникнуть и изучить. Помогите пожалуйста написать скрипт с разнесением. Не судите строго,я начинающий!
итак поэтапно:
Задача: надо что бы 2 папки копировались на другой пк в лвс с датами, старые копии удалялись!
как я понял, Для этого надо:
1) Подключить папку куда будут копироваться папки, как сетевой диск
- Сразу вопрос: есть ли вариант не подключать ее сетевым диском?
2) Сам скрипт
- вопрос : можно в одном скрипте сразу указать копирование 2 папок?
3) Добавить в задание чтобы скрипт выполнялся
Теперь самое сложное для меня, скрипт.
1) Надо указать откуда копирую
2) Вставить чтобы создавалась папка с датами
3) Потом - куда копируется
4) Старые копии удалить
примерно я понимаю это так:
XCOPY "D:\opac-global" \\192.168.10.11\bckup_opack\ /E /C /I /H /R /K /Y /F /O
помогите пожалуйста: как сделать папки с датами и удалять старое
firstarey
03-06-2014, 12:02
Sheyko, вариантов множество. например вот такой с логом:
@echo off
Color 0e
rem http://forum.oszone.net/thread-283076.html
rem задаем переменные:
rem дата и время
set DD=%date:~0,2%
set DM=%date:~3,2%
set DY=%date:~6,4%
set TH=%TIME:~0,2%
set TM=%TIME:~3,2%
ping 192.168.10.11
if %errorlevel% NEQ 0 (
echo %DY%-%DM%-%DD% %TH%-%TM% нет пинга>>COPY_NET.log
goto end_net
)
NET USE P: \\192.168.10.11\bckup_opack
if %errorlevel% NEQ 0 (
echo %DY%-%DM%-%DD% %TH%-%TM% не удалось подключить сетевой диск>>COPY_NET.log
goto end_net
)
if not exist "p:\%DY%-%DM%-%DD%\" MD "p:\%DY%-%DM%-%DD%\"
xcopy D:\opac-global\ p:\%DY%-%DM%-%DD%\ /S /F /Y
if %errorlevel% NEQ 0 (
echo %DY%-%DM%-%DD% %TH%-%TM% не удалось скопировайть файлы>>COPY_NET.log
goto end_net
)
rem Удаляем архивы из: \\192.168.10.11\bckup_opack
rem Критерий отбора: старше 4 дней
echo %DY%-%DM%-%DD% %TH%-%TM% чистим>>COPY_NET.log
rem forfiles /P P:\ /M *.* /S /D -5 /C "cmd /c echo Deleted: @PATH >>COPY_NET.log & del @FILE"
exit
:end_net
echo в процессе возникли ошибки. смотрите лог
ping -n 4 localhost>nul
start COPY_NET.log
exit
firstarey, я извиняюсь но у меня ошибка что не удалось подключить сетевой диск, хотя диск я подключил с папкой bckup_opack.
вот строчка : P: \\192.168.10.11\bckup_opack - P- буква диска?
может еще подкинете литературу что бы учиться с 0 писать скрипты!
но у меня ошибка что не удалось подключить сетевой диск, хотя диск я подключил с папкой bckup_opack. »
Не «хотя я подключил», а именно «потому, что я подключил». В пакетном файле делается самостоятельная попытка подключения удалённого ресурса, и прерывание его работы в случае ошибки подключения.
P.S. Для работы само подключение удалённого ресурса ни разу не является обязательным. Пакетные файлы превосходно работают с UNC-ресурсами напрямую.
firstarey
04-06-2014, 06:20
Sheyko, товарищ Iska правильно заметил что подключать ничего не нужно - батник сам подключает сетевой ресурс.
и так же верно что можно обойтись без этого, а копировать на прямую по пути \\192.168.10.11\bckup_opack.
это сделано чтоб подстраховаться при удалении старых архивов (строка, начинающаяся с "rem forfiles")
и да, чтобы удаление работало необходимо убрать "rem" перед "forfiles", но сначала проверьте!!
в той же строке стоит параметр "-5" он отвечает за то насколько старые файлы убрать надо
Iska, Я снова извиняюсь, вчера я уезжал. Скрипт запускается, сам подключает сетевой диск, но скопировать папку не может! в логе : недопустимый путь и не удалось скопировать файлы.
И еще вопрос, я так понимаю строчку с подключением сетевого диска лучше убрать, ибо если запускать повторно скрипт, то он ругается что имя локального устройства использовано, т.е пытается создать то что уже есть!
Sheyko, чтобы не ругалось диск после копирования нужно отключать.
NET USE /DELETE p:
кроме того Iska категорически прав: подключение сетевого диска в данном случае не имеет смысла, т.о. подключение диска можно вообще убрать, а копирование примет нижеследующий вид:
if not exist "\\192.168.10.11\bckup_opack\%DY%-%DM%-%DD%\" MD "\\192.168.10.11\bckup_opack\%DY%-%DM%-%DD%\"
xcopy D:\opac-global\ \\192.168.10.11\bckup_opack\%DY%-%DM%-%DD%\ /S /F /Y
Посмотрите пожалуйста вариант, без добавления сетевого диска:
@echo off
Color 0e
rem http://forum.oszone.net/thread-283076.html
rem задаем переменные:
rem дата и время
set DD=%date:~0,2%
set DM=%date:~3,2%
set DY=%date:~6,4%
set TH=%TIME:~0,2%
set TM=%TIME:~3,2%
if not exist "\\192.168.101.77\bckup_opac\%DY%-%DM%-%DD%\" MD "\\192.168.101.77\bckup_opac\%DY%-%DM%-%DD%\"
xcopy D:\backup\ \\192.168.101.77\bckup_opac\%DY%-%DM%-%DD%\ /S /F /Y
if %errorlevel% NEQ 0 (
echo %DY%-%DM%-%DD% %TH%-%TM% не удалось скопировайть файлы>>COPY_NET.log
goto end_net
)
rem Удаляем архивы из: \\192.168.101.77\bckup_opaс
rem Критерий отбора: старше 4 дней
echo %DY%-%DM%-%DD% %TH%-%TM% чистим>>COPY_NET.log
:end_net
echo в процессе возникли ошибки. смотрите лог
ping -n 4 localhost>nul
exit
Что неправильно? ибо пишет: недопустимый путь (папка расшаренная) по \\ захожу
Ну, во-первых:
if not exist "\\192.168.101.77\bckup_opac\%DY%-%DM%-%DD%\." MD "\\192.168.101.77\bckup_opac\%DY%-%DM%-%DD%"
firstarey
06-06-2014, 11:10
Посмотрите пожалуйста вариант, без добавления сетевого диска: »
@echo off
Color 0e
rem http://forum.oszone.net/thread-283076.html
rem задаем переменные:
set DD=%date:~0,2%
set DM=%date:~3,2%
set DY=%date:~6,4%
if not exist "\\192.168.101.77\bckup_opac\%DY%-%DM%-%DD%\" MD "\\192.168.101.77\bckup_opac\%DY%-%DM%-%DD%\"
xcopy D:\backup\* \\192.168.101.77\bckup_opac\%DY%-%DM%-%DD%\ /S /F /Y
if %errorlevel% NEQ 0 (
echo не удалось скопировайть файлы
pause>nul
)
pause>nul
- Выше нашли косяк - не нужны апострофы в конце xcopy "D:\backup\" и "\\192.168.101.77\bckup_opac\%DY%-%DM%-%DD%\"
firstarey
06-06-2014, 11:18
Sheyko, можно вообще вот так:
@echo off
Color 0e
rem http://forum.oszone.net/thread-283076.html
rem задаем переменные:
set DD=%date:~0,2%
set DM=%date:~3,2%
set DY=%date:~6,4%
set Chto="D:\backup\*"
set Kuda="\\192.168.101.77\bckup_opac\%DY%-%DM%-%DD%\"
if not exist %kuda% MD %kuda%
xcopy %Chto% %kuda% /S /F /Y
pause>nul
firstarey, так прям красиво смотрится и читается легче! спасибо! сейчас еще поэкспериментирую
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.