У меня есть набор сценариев для резервного копирования моего Exchange. Для запуска процесса выполняется следующая команда:
diskshadow /s C:\Backup_Scripts\exchangeserverbackupscript1.dsh
Это exchangeserverbackupscript1.dsh:
#DiskShadow script file
set verbose on
#delete shadows all
set context persistent
writer verify {76fe1ac4-15f7-4bcd-987e-8e1acb462fb7}
set metadata C:\Backup_Scripts\shadowmetadata.cab
begin backup
add volume C: alias SH1
create
expose %SH1% P:
exec C:\Backup_Scripts\exchangeserverbackupscript1.cmd
end backup
delete shadows exposed P:
exit
#End of script
А это exchangeserverbackupscript1.cmd:
robocopy "P:\Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group" "\\leahyfs\J$\E-Mail Backups\Day 1" /MIR /R:0 /W:0 /COPY:DT /B
Это не заставляет Exchange очищать свои файлы журналов. В edb файл составляет 4,7 гигабайта, но Первая группа хранения сама папка составляет 50+ гигабайт из-за большого количества файлов журналов на каждый день возвращаясь в 2009.
Есть ли способ - я погуглил и ничего не нашел - уведомить Exchange, когда я завершил полное резервное копирование, и очистить его файлы журнала?
В соответствии с этот и этот, конец резервного копирования должен заставить Exchange "очистить журналы транзакций для этой группы хранения" но только "если произошло успешное резервное копирование группы хранения", что оставляет мой вопрос следующим образом:
Что представляет собой «успешное резервное копирование», и почему я этого не делаю?
Как правило, блок BEGIN BACKUP / END BACKUP будет сигнализировать Exchange об усечении журналов. Но для того, чтобы это работало, вы должны были создать снимок все тома с данными, связанными с Exchange - поэтому, если вы разделили журналы данных и транзакций, вам нужно будет сделать снимок обоих - данных и объем Tlog.
Кроме того, вы должны убедиться, что ваш скрипт exchangeserverbackupscript1.cmd
действительно возвращается с нулевым кодом выхода - если это не так, сценарий diskshadow будет прерван и строка «конец резервного копирования» никогда не будет выполнена. Я полагаю, что robocopy завершит работу с кодом выхода "1" после успешного копирования файла, что может представлять корень вашей проблемы, поскольку уровень ошибок robocopy будет уровнем ошибок вашего пакета, если robocopy является последней выполненной командой. Попробуйте добавить условную проверку успешности robocopy и exit /B 0
в конец вашего командного файла.