powershell备份脚本,每个文件都有错误记录

时间:2013-03-20 18:00:24

标签: powershell backup

真的需要帮助创建一个备份的脚本,并在没有复制的文件中发现错误

以下是我的尝试:

创建要传递给copy-item的文件路径列表,希望以后能够捕获每个文件的错误,然后再记录它们:

使用$list2X我可以遍历每个文件,但是copy-item会丢失目录结构并将其全部发送到单个文件夹。 所以现在我正在使用$list2,之后我会copy-item -recurse复制文件夹:

#create list to copy
$list = Get-ChildItem -path $source | Select-Object Fullname
$list2 = $list -replace ("}"),("")
$list2 = $list2 -replace ("@{Fullname=") , ("")

out-file -FilePath g:\backuplog\DirList.txt -InputObject $list2

#create list crosscheck later
$listX = Get-ChildItem -path $source -recurse | Select-Object Fullname
$list2X = $listX -replace ("}"),("")
$list2X = $list2X -replace ("@{Fullname=") , ("")

out-file -FilePath g:\backuplog\FileDirList.txt -InputObject $list2X           

在这里,我将通过列表:

$error.clear()
Foreach($item in $list2){
 Copy-Item -Path $item -Destination $destination -recurse -force -erroraction Continue 
  }
 out-file -FilePath g:\backuplog\errorsBackup.txt -InputObject $error

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

复杂文件复制或备份脚本的答案几乎总是:“使用robocopy。”

比尔

答案 1 :(得分:0)

Want to copy all the items in C:\Scripts (including subfolders) to C:\Test? Then simply use a wildcard character...

接下来让自己更容易,并做这样的事情:

$files = (Get-ChildItem $path).FullName #Requires PS 3.0
#or
$files = Get-ChildItem $path | % {$_.Fullname}
$files | Out-File $outpath

答案 2 :(得分:0)

考虑到我的回应时间,我花了很长时间。这是我的复制功能,它记录了大多数错误(网络丢失,失败的副本等)复制功能和targetobject。

Function backUP{ Param ([string]$destination1 ,$list1)
$destination2 = $destination1
                          #extract new made string for backuplog
                        $index = $destination2.LastIndexOf("\") 
                        $count = $destination2.length - $index
                        $source1 = $destination2.Substring($index, $count)
                        $finalstr2 = $logdrive + $source1

Foreach($item in $list1){

 Copy-Item -Container: $true -Recurse -Force -Path $item -Destination     $destination1     -erroraction Continue 
 if(-not $?)
 {
  write-output "ERROR de copiado : " $error| format-list | out-file  -Append             "$finalstr2\GCI-ERRORS-backup.txt"
      Foreach($erritem in $error){
      write-output "Error Data:" $erritem.TargetObject  | out-file -Append   "$finalstr2\GCI-    ERRORS-backup.txt"
          }
  $error.Clear()
     }
   }
 }
相关问题