Войти

Показать полную графическую версию : Скрипт резервного копирования папок


Sheyko
03-06-2014, 11:21
Тема наверное изъезженная, но все-таки прошу помощи!

Добрый день, срочно встала задача настроить резервное копирование 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

Sheyko
03-06-2014, 16:22
firstarey, я извиняюсь но у меня ошибка что не удалось подключить сетевой диск, хотя диск я подключил с папкой bckup_opack.

вот строчка : P: \\192.168.10.11\bckup_opack - P- буква диска?

может еще подкинете литературу что бы учиться с 0 писать скрипты!

Iska
03-06-2014, 18:14
но у меня ошибка что не удалось подключить сетевой диск, хотя диск я подключил с папкой bckup_opack. »
Не «хотя я подключил», а именно «потому, что я подключил». В пакетном файле делается самостоятельная попытка подключения удалённого ресурса, и прерывание его работы в случае ошибки подключения.

P.S. Для работы само подключение удалённого ресурса ни разу не является обязательным. Пакетные файлы превосходно работают с UNC-ресурсами напрямую.

firstarey
04-06-2014, 06:20
Sheyko, товарищ Iska правильно заметил что подключать ничего не нужно - батник сам подключает сетевой ресурс.
и так же верно что можно обойтись без этого, а копировать на прямую по пути \\192.168.10.11\bckup_opack.


это сделано чтоб подстраховаться при удалении старых архивов (строка, начинающаяся с "rem forfiles")
и да, чтобы удаление работало необходимо убрать "rem" перед "forfiles", но сначала проверьте!!
в той же строке стоит параметр "-5" он отвечает за то насколько старые файлы убрать надо

Sheyko
06-06-2014, 09:01
Iska, Я снова извиняюсь, вчера я уезжал. Скрипт запускается, сам подключает сетевой диск, но скопировать папку не может! в логе : недопустимый путь и не удалось скопировать файлы.

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

Elven
06-06-2014, 09:55
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

Sheyko
06-06-2014, 10:50
Посмотрите пожалуйста вариант, без добавления сетевого диска:

@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

Что неправильно? ибо пишет: недопустимый путь (папка расшаренная) по \\ захожу

Iska
06-06-2014, 11:10
Ну, во-первых:
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

Sheyko
06-06-2014, 11:12
- Выше нашли косяк - не нужны апострофы в конце 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

Sheyko
06-06-2014, 11:26
firstarey, так прям красиво смотрится и читается легче! спасибо! сейчас еще поэкспериментирую




© OSzone.net 2001-2012