【发布时间】:2018-09-28 08:39:40
【问题描述】:
我采用了由Trevor Sullivan 编写的 PowerShell 脚本 Copy-WithProgress(谢谢!),但有些计算似乎不正确,超过 8,000 个文件返回 3PB,5,000 个文件返回 7Bytes。
我正在为我的“暂存日志”使用以下 Robocopy 参数:
$CommonRobocopyParams = '/MIR /S /NP /NDL /NC /BYTES /NJH /NJS /R:1 /W:1'
并且正在使用以下内容读取日志以计算要复制的字节数:
$BackupLog = 'C:\Users\username\Desktop\Backup_2018-09-20-112849'
$StagingLogPath = '{0}\robocopy staging.log' -f $BackupLog
$StagingContent = Get-Content -Path $StagingLogPath | ? {$_} #Skip blank lines in log
$TotalFileCount = $StagingContent.Count
Write-Host "Number of selected files to be copied: $TotalFileCount."
$RegexBytes = '(?<=\s+)\d+(?=\s+)'
[RegEx]::Matches(($StagingContent -join "`n"), $RegexBytes) | % { $BytesTotal = 0 } { $BytesTotal += $_.Value }
$message = 'Total number of bytes to be copied: {0:N0}' -f ($BytesTotal/1GB)
Write-Host $message
上面的“跳过日志中的空白行”是为了处理来自另一个文件夹的另一组日志,即同一个“暂存日志”文件中的文档,用空行分隔。
脚本在我测试过的 6 台机器中有 1 台计算不正确,并且仅在问题机器上备份桌面时。我检查了“暂存日志”并将其与正确的计算结果进行了比较,如下所示:
13162 C:\Users\username\Desktop\File 1.xlsx
1765924 C:\Users\username\Desktop\File 2.xlsx
68838 C:\Users\username\Desktop\File 3.pdf
2380 C:\Users\username\Desktop\File 4.docx
403759 C:\Users\username\Desktop\File 5.txt
10068 C:\Users\username\Desktop\File 6.xlsx
28502 C:\Users\username\Desktop\File 7.jpg
139277 C:\Users\username\Desktop\File 8.docx
553469 C:\Users\username\Desktop\File 9.log
283502 C:\Users\username\Desktop\Book1.xlsx
我很好奇是否有人遇到过这个问题并解决了这个问题。提前谢谢!
【问题讨论】:
标签: powershell robocopy