我试图找到一种在 Perl 中监视目录的方法,特别是目录的大小,并在检测到目录大小的变化时,执行特定的操作。
我遇到的问题是需要大量时间才能复制到此目录的大文件,即 > 100MB。发生的事情(在 Windows 中,而不是 Unix 中)是系统为整个文件保留了足够的磁盘空间,即使文件仍在复制中。这给我带来了问题,因为我的脚本将尝试对尚未完成复制的文件执行操作。我可以通过“du”轻松检测 Unix 中的目录大小变化,但 Windows 中的“du”的行为方式不同。
是否有任何准确的方法可以检测 Perl 中的目录大小变化?
编辑:需要澄清的几点: - 我的 Perl 脚本仅监视特定目录,并在检测到新文件或新目录时,对这个新文件或目录执行操作。它没有复制任何文件;网络上的用户会将文件复制到我正在监视的目录中。- 当出现非常大(> 100MB,但通常为几 GB)的新文件或目录(已复制,未移动)并且我的程序在此复制完成之前触发时,就会出现问题 - 在 Unix 中,我可以轻松地“du”看到相关文件/目录的大小正在增长,并采取适当的措施 - 在 Windows 中,大小是静态的,所以我无法检测到这种变化 - opendir/readdir/closedir 不是可行,因为出现的一些目录可能包含数千个文件,我想避免
理想情况下,我希望我的程序在更改时触发,但我不确定如何执行此操作。截至目前,它忙于等待,直到检测到更改。文件/目录大小的变化不在我的控制范围内。