Наверное некоторые из коллег- администраторов сталкивались с такой проблемой, когда из-за нехватки системных ресурсов платформа windows отказывается копировать большие файлы встроенными средствами (обычно это файлы бекапа 60+Gb) скажем с одного диска на другой, не помогает тут и утилита «Robocopy» от Sysinternals. Предлагаю решить данную проблему при помощи утилиты KillCopy, а чтобы не приходилось работать руками — создадим простой скрипт, благо утилита позволяет работать с ней из коммандной строки:
@ECHO off
Ниже прилагаю стандартный vbs-скрипт для отправки по e-mail результатов копирования:
Dim ArgObj
Надеюсь мой опыт поможет коллегам в их ежедневной работе.
@ECHO off
ECHO ==========================
ECHO Keys:
ECHO r -retry on any error
ECHO n -start KillCopy in minimized state
ECHO m -move files
ECHO x -don't delete !list filelist
ECHO u -try resume if target file exists.
ECHO ==========================
SET BCKP_FLDR=<папка откуда копируем>
SET DST_FLDR=<папка куда копируем>
rem устанавливаем путь, в котором будет создаваться список копируемых файлов, а так же задаем параметры killcopy.
SET BCKP_LIST=C:\backuplist.txt
SET copyParm= -rnmxu
rem задаем путь, где хранится файл истории и лога killcopy
SET CHECK_FILE=C:\Progra~1\KillSoft\KillCopy\history.txt
SET CHECK_LOG=C:\Scripts\killcopycheck.txt
echo Getting Directories list…
dir "%BCKP_FLDR%" /b /s /a:d > "%BCKP_LIST%"
echo Starting KillCopy %DATE% %TIME%
echo Copying files…
kc.exe %BCKP_LIST% %DST_FLDR% %copyParm%
rem парсим хистори файл:
echo Parsing Killcopy Log…
findstr /i. "%CHECK_FILE%" >> "%CHECK_LOG%"
echo Sending log via e-mail…
wscript c:\scripts\Email_ME.vbs "%CHECK_LOG%" «Killcopy Check Result»
rem echo Deleting temporary files…
del /q "%CHECK_LOG%"
del /q "%BCKP_LIST%"
del /q "%CHECK_FILE%"
Ниже прилагаю стандартный vbs-скрипт для отправки по e-mail результатов копирования:
Dim ArgObj
Set ArgObj = WScript.Arguments
Dim sFileName
Dim sMsgSubject
sFileName = ArgObj.Item(0)
sMsgSubject = ArgObj.Item(1)
Function GetTxtFileContent(sFilePath)
Dim fso, txtStream
Dim sRes
Set fso = CreateObject(«Scripting.FileSystemObject»)
Set txtStream = fso.OpenTextFile(sFilePath, 1)
sRes = txtStream.ReadAll
GetTxtFileContent = sRes
End Function
Set objEmail = CreateObject(«CDO.Message»)
objEmail.From = «от кого»
objEmail.To = «кому»
objEmail.BodyPart.Charset = «koi8-r»
objEmail.Subject = sMsgSubject
objEmail.Textbody = GetTxtFileContent(sFileName)
objEmail.Configuration.Fields.Item _
(«schemas.microsoft.com/cdo/configuration/sendusing») = 2
objEmail.Configuration.Fields.Item _
(«schemas.microsoft.com/cdo/configuration/smtpserver») = _
«адрес smtp сервера»
objEmail.Configuration.Fields.Item _
(«schemas.microsoft.com/cdo/configuration/smtpserverport») = 25
objEmail.Configuration.Fields.Update
objEmail.Send
Надеюсь мой опыт поможет коллегам в их ежедневной работе.