我在一家小型律师事务所工作,该律师事务所将数 TB 的文档存储在其办公室工作站之一的网络共享文件夹中。我为他们设置了专用的容错 NAS。他们想要一份转移的书面记录,或者至少是一份书面审计,以确认旧服务器上存在的每个文件都存在于新服务器上。我该怎么做?
递归列出两个目录的内容并进行简单的操作diff
就足够了,但我确信我不是唯一有这种需要的人。最坏的情况是,我可以编写一个 shell 脚本(必须有一个递归选项,对ls
吧?)将内容输出到文件并比较文件。
如果可以在 Windows 中执行此操作,那就更好了。我对 Powershell/batch 的熟悉程度不如对 bash 的熟悉程度,但所有办公机器都是 Windows,我希望能够在夜间完成设置,然后就不用管它了。否则,我可能不得不将笔记本电脑留在那里过夜,让 bash 脚本发挥作用。
答案1
在 中CMD
,如果您使用xcopy
并记录输出,这将为您提供可打印的审计,尽管您可能希望在执行此操作之前使用文字处理器对其进行格式化。命令将是:
xcopy /s /v SourceDir TargetDir >xcopy.log 2>&1
完成后,你可以快速检查是否有任何故障:
xcopy /s /d /v SourceDir TargetDir >xcopyFailures.log 2>&1
第二个日志应该是空的,但如果不是,那么应该很少有条目。
如果您想使用 Linux,您可以使用 获得类似的结果rsync -axv ...
。请注意,如果您想通过重复命令进行快速检查,您将需要比较源目录和目标目录上的文件时间戳分辨率,并在必要时--modify-window
在第二次调用时使用。
答案2
好吧,我最终按照第二段中描述的方式做了,效果比我预期的要好。在其中一台办公室机器上的 powershell 中(因为我需要学习新的,不妨学习更新的):
cd
到新服务器的根目录
dir -Recurse | Out-File 'path\to\CONTENTS_NEWSERVER.txt'
cd
到旧服务器的根目录
dir -Recurse | Out-File 'path\to\CONTENTS_OLDSERVER.txt'
这创建了两个文件......一份纸质记录!
之后,我只需运行 Compare-Object 来确认我需要知道的一切(并且也保存了该文件)。
仍然想知道:有什么好方法可以解决忽略隐藏文件和缩略图数据库等问题?这些是唯一不同的东西,而且花了很长时间仔细检查 diff 文件,以确保其中没有列出真正的文件。
出于感激,我将 AFH 的答案标记为正确,并且因为他用 CMD/batch 术语解释了这一点,这很好。