我有 2 个文件夹:
$srcPath = \\stagingserver
$destPath = \\productionserver
我想比较这两者以确定 $src 文件夹中的哪些更改尚未推送到生产环境。该项目是超过 100 个目录的约 4000 个文件,总计约 80mb。我目前正在像这样进行哈希比较:
$src = Get-ChildItem $srcPath -Recurse
$dest = Get-ChildItem $destPath -Recurse
$same = Compare-Object $src $dest -Property Name, Length, LastWriteTime -passthru -includeequal -excludeDifferent
$srcTree = Get-ChildItem $src -Recurse -exclude $same | Where-Object {!$_.psiscontainer } | get-hash
$destTree = Get-ChildItem $dest -Recurse -exclude $same | Where-Object {!$_.psiscontainer } | get-hash
$diff = Compare-Object -ReferenceObject $srcTree -differenceObject $destTree | ? {$_.SideIndicator -eq "<=" } | % {$_.InputObject.Path}
大约需要 5 分钟。我接受它是因为它需要在本地复制所有内容以执行散列。我怎样才能更快地做到这一点?有没有办法为服务器上的每个文件维护一个哈希值?我应该远程执行脚本吗?