![如何移动或删除 NTFS 驱动器上包含 200 万个文件的文件夹中的文件?](https://linux22.com/image/505032/%E5%A6%82%E4%BD%95%E7%A7%BB%E5%8A%A8%E6%88%96%E5%88%A0%E9%99%A4%20NTFS%20%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%B8%8A%E5%8C%85%E5%90%AB%20200%20%E4%B8%87%E4%B8%AA%E6%96%87%E4%BB%B6%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
问题是,对目录的任何修改都会无限期锁定 Explorer,尽管 Samba 仍可访问其他目录。我尝试过在本地和通过 Samba 移动文件。
即使枚举目录来获取文件列表也会无限期地锁定计算机。
我尝试使用 Pythonwin32file.FindFilesIterator
来迭代文件,但是也挂了。
我的想法是根据每个文件的时间戳将其移动到不同的目录(在我们正在处理的目录上方的目录中),这样每个目录中最多会有一千个左右的文件......但由于我甚至无法枚举这些文件,所以这根本行不通。
如果我不得不放弃并删除目录,我愿意这样做,但标准删除也会无限期挂起。
我已经设置了这两个参数来提高速度,但它们也无助于解决问题:
R:\>fsutil behavior query disablelastaccess
disablelastaccess = 1
R:\>fsutil behavior query disable8dot3
disable8dot3 = 1
这些都是连续图像,可能会遇到 8.3 文件名的“错误”,即一个目录中的许多类似名称的文件可能需要很长时间才能计算出 8.3 文件名。据我所知,即使启用 disable8dot3 后,这些数据仍存储在文件系统中,因此它可能仍是导致问题的原因。
有任何想法吗?
答案1
根据文件的添加方式以及文件夹的碎片程度,最快的方法可能是移走您想要保留的文件并删除分区!
答案2
我不知道它是否会起作用,也不知道这对您来说是否是一种实用的方法,但是将硬盘放入 Linux 计算机并使用 Linux 尝试一下怎么样?
(有可启动的 Live CD 可供下载 - 您甚至不需要物理移动硬盘)。
答案3
您不应该做以下两件事:
- 将很多文件放入一个文件夹中
- 使用 Windows 资源管理器来查看这样的文件夹,更不用说尝试对其执行任何操作。
实际情况是,Explorer 正在访问这些文件中的每一个文件,以获取将要或可能显示在 Explorer 界面中的信息。此外,如果您正在访问防病毒扫描(如果没有,为什么不),每个文件都将被扫描,即使只是为了确定它是否是应该扫描的类型之一。处理如此多的文件时,所有这些都需要很长时间。
短期解决方案 - 改用命令行或某种形式的脚本。
长期解决方案 - 制定一个合理的方案,确保任何一个文件夹中的文件数量不超过几千个。
答案4
尝试使用 PowerShell。使用 Move-Item Cmdlet
高血压