2

Я задерживаю этот сценарий резервного копирования, который я писал. Цель сценария заключается в следующем:Запланированное резервное копирование файлов файлов

  1. Wake-спящие ПК на моей локальной сети

  2. Run Microsofts SyncToy (CMD версия) для синхронизации всех спаренных папок, которые у меня есть настройки и вывода результаты для регистрации файла.

  3. Если возникла ошибка, она должна записать ее в файл журнала, а затем отправить электронное письмо мне через mailsend.exe.

Пакетный файл запускается каждую ночь с помощью запланированных задач Windows 7.

Содержание пакетного файла:

@ECHO OFF 
    SET /a RETRY=0 
    SET /a RETRIES=5 
    SET MAC=000c76****** 
    SET IP=192.168.0.8 
    SET SUBNET=255.255.255.0 
    SET PORT=7 

    ECHO %date% - %time% - Started sync. 

    :CHECK 
    PING -n 1 %IP% | find "bytes=">NUL 
    IF %ERRORLEVEL%==0 (
    GOTO SYNC 
    ) 
    IF %ERRORLEVEL%==1 (
    GOTO WAKE 
    ) 

    :WAKE 
    SET /a RETRY=%RETRY%+1 
    IF %RETRY% GEQ 6 (
    SET ERR_VAL=RETRY 
    GOTO ERROR 
    ) 
    ECHO Waking up \\NAS Attempt %RETRY%\5... 
    START C:\sync\wolcmd.exe %MAC% %IP% %SUBNET% %PORT% 
    timeout /T 30 /NOBREAK>NUL 
    GOTO CHECK 

    :SYNC 
    ECHO SyncToy is running... 
    "C:\Program Files\SyncToy 2.1\SyncToyCmd.exe" -R>C:\sync\synctoy_log.txt 
    IF %ERRORLEVEL% == 0 (
    ECHO %date% - %time% - Success: Sync completed.>>C:\sync\synctoy_error_log.txt 
    GOTO END 
    ) ELSE (
    SET ERR_LEV=%ERRORLEVEL% 
    SET ERR_VAL=SYNC 
    GOTO ERROR 
    ) 

    :ERROR 
    IF %ERR_VAL%==RETRY (
    ECHO Error: Failed to sync, retries exceeded. 
    ECHO %date% - %time% - Error: Failed to sync, retries exceeded.>>C:\sync\synctoy_error_log.txt 
    ) 
    IF %ERR_VAL%==SYNC (
    ECHO Error: SyncToy error (%ERR_LEV%). 
    ECHO %date% - %time% - Error: SyncToy error (%ERR_LEV%).>>C:\sync\synctoy_error_log.txt 
    ) 
    START C:\sync\mailsend.exe -to [email protected] -from [email protected] -ssl -attach synctoy_error_log.txt,text/plain,i -smtp smtp.googlemail.com -port 465 -sub SyncToy_log +cc +bc -v -auth-login -user [email protected] -pass examplepass 
    GOTO END 

    :END 
    EXIT 

Содержание synctoy_error_log.txt

18/02/2013 - 6:02:16.40 - Success: Sync completed. 
    20/02/2013 - 6:05:25.71 - Success: Sync completed. 
    21/02/2013 - 6:07:14.27 - Success: Sync completed. 
    22/02/2013 - 6:02:56.34 - Success: Sync completed. 
    24/02/2013 - 6:01:49.97 - Success: Sync completed. 
    25/02/2013 - 6:01:35.14 - Success: Sync completed. 

Как вы можете видеть, что было пару дней, когда журнал не был написан. ПК с запланированной задачей и ПК, который я хочу просыпаться, должен был быть доступен в это время.

Есть ли что-нибудь, что я делаю неправильно здесь, в моей проверке ошибок или что-то в этом роде?

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

Благодарим за любые советы, которые вы можете мне дать. Я знаю, что это не самый эффективный сценарий, но я пытаюсь забрать все, что могу, чтобы пройти.

+2

Возможно, это проблема с разрешениями, что запланированное задание не может отправить электронное письмо. Вы пытались написать более простой пакетный файл, который просто отправляет письмо, и пусть он запускается по расписанию, чтобы убедиться, что эта часть работает? Вы также можете попробовать, чтобы командный файл записывался в свой журнал каждый раз, когда он запускается, поэтому вы можете хотя бы подтвердить, что он работает в эти дни (и, возможно, даже выплюнул несколько отладочных сообщений в журнал, чтобы вы могли видеть, как далеко получает). Также просмотрите журнал событий, чтобы узнать, сообщили ли планировщик задач о любых ошибках. –

+0

Спасибо за отличный совет, я пойду дальше и попробую. –

+0

Я сделал новый упрощенный пакетный файл только с строкой «mailsend.exe», и он работает исправно, когда активирован с помощью запланированной задачи. Я также добавил новый файл журнала для захвата данных отладки из самого пакетного файла. Мне просто нужно подождать и посмотреть, активируется ли он в дни, когда журнал не написан. –

ответ

0

Под какой учетной записью выполняется сценарий как запланированное задание? обычно система учетной записи nt не может использовать какие-либо сетевые ресурсы, попробуйте запустить под учетной записью пользователя, которая разрешена для входа в пакетную задачу в secpol.

+0

Работает под учетной записью администратора. –

+1

нажмите кнопку start type secpol.msc и запустите его - выберите «Локальные политики» в оснастке MSC - выберите «Назначение прав пользователя» - щелкните правой кнопкой мыши «Войти в качестве пакетного задания» и выберите «Свойства» - нажмите «Добавить пользователя или группу», и включить соответствующего пользователя. – peet

+0

@ rikki-b вы попробовали? – peet

Смежные вопросы