Powershell 복사 항목이 자동으로 실패합니다.

Powershell 복사 항목이 자동으로 실패합니다.

일부 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를 사용하면 추가 오류를 검색할 수 있습니다.

관련 정보