我可以使用什么来详细比较本地和networking共享数据?

我有一个IT问题,我可以使用一些帮助。 我在一个有很多用户(1000+)的大型组织工作。 我们目前在混合的Server 2012 R2 / 2008 / Windows 7环境中。 情况是这样的:

领导层要求我部门支持的计算机上的重要文件应该备份到为每个用户configuration的networking驱动器上。 这主要涉及文档,关键的Word和Excel文件,AutoCAD文件等。

由于服务器的空间限制和组织的规模,我们目前不使用redirect文件或将所有用户数据备份到中央位置。 几年前的想法是networking驱动器可以像Dropbox文件夹一样运行,用户可以根据他们认为最重要的内容自行维护上传的内容。 然而,领导层却担心这种情况并没有发生,许多人根本没有使用驱动器,这就是授权的来源。然而许多用户仍然不遵守。

我被要求find一种方法来确定哪些用户正确备份,哪些不是,只要有可能这样做。 尽pipe我主要使用Windows,但对于类似于Unix的脚本,我对PowerShell或VBS的了解要多得多。 我build议实施一个基于rsync的解决scheme,如cwrsync,只是强制基于一套详细的规则进行同步,但领导更感兴趣的是找出谁不遵守,所以他们可以让用户自己做。 他们担心的是,一旦我们用广泛的备份策略打开闸门,即使我们试图限制通过规则备份的文件的大小,服务器也可能会快速超载。

因此,这个想法是find一个脚本或程序,可以比较计算机上的文件和每个用户的份额,并告诉我们从哪一个或哪些缺less的。 我发现了一些非常基本的PowerShell命令,但仅限于文件名 – 所以不包括大小,date和types等信息。 处理所有这些数据也是具有挑战性的,因此find一些能够让我轻松分类的强大输出结果是很好的。

任何想法,我可以看看?

PowerShell中的Compare-Object命令将是一个很好的开始。

像这样的东西:

$ref = Get-ChildItem C:\users\user\folder $dif = Get-ChildItem \\Share\Folder Compare-Object -referenceobject $ref -differenceobject $dif 

应该给你这样的输出:

 InputObject SideIndicator ----------- ------------- TEST3.txt => TEST1.txt <= 

这将显示差异对象位置(远程共享)具有TEST3.txt,但引用对象(本地文件夹)不引用而引用对象位置具有TEST1.txt,但差异对象位置不包含。

在这个testing中,在两个位置都有一个名为TEST2.txt的文件,并且不会显示在结果中。

CMD命令FC可以用来做这两种方法:

1) FC _usersFilePath_\* _shareFilepath_\* > compare.txt这将比较这些文件并将结果输出到一个txt文件

2)一个batch file:(将做同样的但不检查文件的内容)

 cd _usersFilePath_ tree /d > usersFiles.txt cd _shareFilePath_ tree /d > shareFiles.txt fc usersFiles.txt shareFiles.txt > compare.txt 

资料来源: https : //stackoverflow.com/a/6877352/5540644