
일부 Hyper-V .vhd 파일을 '백업 솔루션'으로 다른 서버에 복사하는 Windows Server 2008 R2 64비트에서 실행되는 PowerShell 2.0 스크립트가 있습니다.
스크립트는 복사할 .vhd 목록을 가져온 다음 해당 목록을 반복하여 Copy-Item을 사용하여 복사합니다. 또한 일부 로깅 정보를 파일에 기록합니다. 파일은 다른 서버(Windows Server 2003 Sp2)의 NTFS 압축으로 압축된 디렉터리로 복사됩니다.
파일 중 하나가 복사되지 않았습니다. 비교적 큰 편입니다~68GB입니다. 다른 것들은 20Gb 이하입니다. 이상한 점은 복사 프로세스 중에 파일이 대상 서버에 나타나고 생성된 로그 파일에는 로그 파일 항목 시간의 차이로 인해 파일이 복사되었음을 나타내는 것 같습니다.
로그 파일에 오류 메시지가 표시되지 않고 두 컴퓨터의 이벤트 로그에도 아무것도 표시되지 않습니다.
복사를 수행하는 코드는 다음과 같습니다.
Get-ChildItem $VMSource *.vhd -Recurse | foreach-object {
$time = Get-Date -format HH.mm.ss
Add-Content $logFileName "$time : File Copy ($_) started"
$fullname = $_.FullName
Add-Content $logFileName "$time : Copying $fullname to $VMDestination"
Copy-Item $fullname $VMDestination -Force -ErrorAction SilentlyContinue -ErrorVariable errors
foreach($error in $errors)
{
if ($error.Exception -ne $null)
{
Add-Content $logFileName "'tERROR COPYING FILE : $($error.Exception)"
}
}
$time = Get-Date -format HH.mm.ss
Add-Content $logFileName "$time : File Copy ($_) finished"
}
압축된 디렉토리에 너무 큰 파일을 복사하는 데 문제가 있다고 생각할 수 있습니까? 어떤 아이디어가 있나요?
답변1
문제는 일반적으로 해당 파일의 복사본이었습니다. 탐색기에서 파일 복사를 시도했는데 파일의 일부가 다른 프로세스에 의해 잠겼다는 오류와 함께 약 한 시간 후에 실패했습니다.
파일을 대상으로 이동하기 전에 압축하도록 스크립트를 수정했습니다. 이제 스크립트는 훨씬 오래 걸리지만 성공적으로 실행됩니다.
어떤 답변이라도 건배하세요.
답변2
-errorvariable 옵션을 검사해야 합니다. -errors 대신 +errors를 사용하면 추가 오류를 검색할 수 있습니다.