Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Скрипт резервного копирования папок (http://forum.oszone.net/showthread.php?t=283076)

Sheyko 03-06-2014 11:21 2359314

Скрипт резервного копирования папок
 
Тема наверное изъезженная, но все-таки прошу помощи!

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

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 2359461

firstarey, я извиняюсь но у меня ошибка что не удалось подключить сетевой диск, хотя диск я подключил с папкой bckup_opack.

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

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

Iska 03-06-2014 18:14 2359509

Цитата:

Цитата Sheyko
но у меня ошибка что не удалось подключить сетевой диск, хотя диск я подключил с папкой bckup_opack. »

Не «хотя я подключил», а именно «потому, что я подключил». В пакетном файле делается самостоятельная попытка подключения удалённого ресурса, и прерывание его работы в случае ошибки подключения.

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

firstarey 04-06-2014 06:20 2359655

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


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

Sheyko 06-06-2014 09:01 2360617

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

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

Elven 06-06-2014 09:55 2360631

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 2360648

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

PHP код:

@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.77bckup_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 2360660

Ну, во-первых:
Код:

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 2360661

Цитата:

Цитата 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%

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 2360662

- Выше нашли косяк - не нужны апострофы в конце xcopy "D:\backup\" и "\\192.168.101.77\bckup_opac\%DY%-%DM%-%DD%\"

firstarey 06-06-2014 11:18 2360666

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 2360671

firstarey, так прям красиво смотрится и читается легче! спасибо! сейчас еще поэкспериментирую


Время: 02:47.

Время: 02:47.
© OSzone.net 2001-