验证Robocopy操作

3

我希望在运行Robocopy脚本后运行一个定时脚本,该脚本将在远程服务器之间移动文件。

此脚本的要求是检查Robocopy脚本是否成功完成了从源目录到目标目录的复制操作。

如果是,则此脚本将清除源目录中的文件和文件夹。

我的问题是如何找出先前运行的Robocopy脚本是否成功完成了其工作?


2
通常情况下,您可以在所有文件上设置+A属性,而Robocopy很可能有一个参数来在每个文件被复制时删除该属性(或者可能是相反的)。您可能需要进一步了解这一点。 - Mike Christensen
也许可以使用Compare-Object命令对文件的lastwritetime和length属性进行比较。 - js2010
3个回答

2

1
如果您需要实际的文件验证,可以使用命令行实用程序Robomate进行验证。
复制文件后,
robocopy d:\foo e:\foo /mir

只需在下面键入以进行验证。

robomate d:\foo e:\foo

访问 https://robomate.tk 了解详情。


0

我不确定如何在PowerShell/Windows上以除了调用bash运行该命令的方式来完成这个任务。

但是,可以利用Linux中的WSL来进行一些手动检查。一个方法是为每个文件写入校验和,将文件复制过去,再为复制后的文件写入校验和,然后比较这两个校验和。你可以使用类似Notepad++中的比较插件(对两个文件都运行相同的行排序,使顺序匹配)进行比较。

你可以使用 find . -type f -exec sha256sum {} \; 递归地获取校验和。

通常我会将每个校验和的输出粘贴到Notepad++中的一个新文档中,在排序和比较之后,它会显示"文件匹配,是否关闭",我选择关闭而不保存。如果某个文件的校验和不匹配,则需要重新复制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接