Я задерживаю этот сценарий резервного копирования, который я писал. Цель сценария заключается в следующем:Запланированное резервное копирование файлов файлов
Wake-спящие ПК на моей локальной сети
Run Microsofts SyncToy (CMD версия) для синхронизации всех спаренных папок, которые у меня есть настройки и вывода результаты для регистрации файла.
Если возникла ошибка, она должна записать ее в файл журнала, а затем отправить электронное письмо мне через 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.
Как вы можете видеть, что было пару дней, когда журнал не был написан. ПК с запланированной задачей и ПК, который я хочу просыпаться, должен был быть доступен в это время.
Есть ли что-нибудь, что я делаю неправильно здесь, в моей проверке ошибок или что-то в этом роде?
Я не получаю сообщение по электронной почте о том, что проблема была, но если я отключу спящий компьютер из локальной сети и запустим скрипт, я получаю сообщение по электронной почте, в котором говорится, что он не может его разбудить.
Благодарим за любые советы, которые вы можете мне дать. Я знаю, что это не самый эффективный сценарий, но я пытаюсь забрать все, что могу, чтобы пройти.
Возможно, это проблема с разрешениями, что запланированное задание не может отправить электронное письмо. Вы пытались написать более простой пакетный файл, который просто отправляет письмо, и пусть он запускается по расписанию, чтобы убедиться, что эта часть работает? Вы также можете попробовать, чтобы командный файл записывался в свой журнал каждый раз, когда он запускается, поэтому вы можете хотя бы подтвердить, что он работает в эти дни (и, возможно, даже выплюнул несколько отладочных сообщений в журнал, чтобы вы могли видеть, как далеко получает). Также просмотрите журнал событий, чтобы узнать, сообщили ли планировщик задач о любых ошибках. –
Спасибо за отличный совет, я пойду дальше и попробую. –
Я сделал новый упрощенный пакетный файл только с строкой «mailsend.exe», и он работает исправно, когда активирован с помощью запланированной задачи. Я также добавил новый файл журнала для захвата данных отладки из самого пакетного файла. Мне просто нужно подождать и посмотреть, активируется ли он в дни, когда журнал не написан. –