小型律师事务所,SBS 2011。在此服务器上,每个案件都有一个文件夹,2012 年从文件夹“1-2012”到“876-2012”,2013 年从文件夹“1-2013”到“555-2013”直到今天。文件夹路径如下所示:“\\SBS2011\folder\subfolder\2012\123-2012”。
偶尔,其中一个文件夹(例如“123-2012”)会消失,因为有人不小心将其移入另一个文件夹(例如移入“497-2013”)。我不知道人们是如何在不知情的情况下移动文件夹的,但这是事实。
找到移动的文件夹确实很困难,它们可能被移动到了数千个地方。
我们不能限制员工的权限:他们必须创建新文件夹并将文件放入其中。他们也需要删除文件夹。
我的想法是在 SBS 上运行一个小守护进程,每次文件夹“\\SBS2011\folder\subfolder*”被移动或删除时,它只在日志文件中写入一行,例如:
16/08/2013 13:45 user "KD" "old path to folder" "new path to folder"
或者只是说某个文件夹已被删除。
有人能给我提示一下,该怎么做?我们的 IT 帮助台制作了影子副本,但还是没能想出好的解决方案。
我错了吗?Windows 下没有守护进程吗?
答案1
使用 FileSystemWatcher 类在 C# 中可以非常简单地完成此操作。
看这个http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx
有一个例子完全符合你的需求。你只需要将控制台输出更改为日志文件,并最终将其实现为 Windows 服务
答案2
据,直到...为止搜索考虑到,我建议使用免费的一切搜索引擎立即找到文件夹和文件。
该产品读取包含所有文件和文件夹重命名和移动的 NTFS 日志文件。它可以设置为随 Windows 启动,因此始终可用且最新。它可以索引包含数百万个文件的磁盘。它的搜索速度非常快,可以优化您输入的每个字符的搜索结果。它还在 Windows 资源管理器中安装了一个 shell 挂钩,以将搜索限制在子文件夹中。
为了拦截变化对于磁盘文件,NTFS美国海军杂志可以直接使用,尽管需要一些编程。
查看文章使用 NTFS 日志进行备份讨论如何使用日志 API。
转储 USN Journal 的 C++ 程序示例可参见本文 Win32 NTFS 日志转储。