Windows系统的回收站文件加载慢无法删除该如何解决

问题场景

近期我在进行地图数据服务维护的过程中,生成了大量的切片数据,由于切片数据不再使用了,我就直接删除,放在回收站里了。最近我不小心误删了一个文件,想要恢复,却发现了一个重大的问题,回收站打不开了,打开后总是显示正在处理...清空回收站也无法不管用。咋办呢?

起初我还以为中病毒了,我下载了火绒安全查杀了以后也不管用,进行垃圾清理就卡主...直接无语了。


知识点拓展

经过我多天的学习终于明白回收站的含义,先分享一下我的理解,有不对的地方欢迎指正。

回收站是电脑操作系统中的一个特殊目录,用于存储被删除但尚未完全清除的文件和文件夹。当删除文件或文件夹时,它们并不立即从硬盘驱动器中移除,而是被移动到回收站中,这样用户可以在意外删除重要文件时进行恢复。回收站通常位于每个硬盘分区的根目录下,用户可以通过清空回收站来永久删除这些文件。

这个问题让我联想到近期正在学习的《Linux系统的中的文件误删改如何恢复》,我对文件的存储方式有了更加深入的理解。
管理多个数据块 1---* Inode - inode_id: int // 唯一标识符 - file_type: enum // 文件、目录、链接 - permissions: int // 权限掩码 - owner: int // 所有者UID - size: long // 文件大小 - ctime: timestamp // 创建时间 - mtime: timestamp // 修改时间 - block_pointers: List // 数据块指针列表 +getBlockIds() +addBlockId(int id) Block - block_id: int // 数据块唯一ID - data: byte[] // 存储的二进制数据 - status: enum // 空闲/已占用/损坏 +read(offset: int, len: int) +write(offset: int, data: byte[])

  • 在linux系统中,索引节点(inode)是文件的"身份证",每个文件或目录都有一个唯一的inode编号

inode中存储了文件的几乎所有元数据,包括:

文件类型:如普通文件、目录、符号链接等。

文件的读、写、执行权限。

所有者信息:用户ID(UID)和组ID(GID)。

文件大小:以字节为单位。

时间戳:包括访问时间(atime)、修改时间(mtime)和元数据变更时间(ctime)。

数据块指针:指向文件实际内容存储位置的指针。

  • inode与文件名是分开存储的,inode中不存储文件名,文件名是存储在目录文件中的,通过目录中的文件名与inode编号的映射关系,系统可以找到对应的inode
  • 文件名存储在目录文件中,而inode负责存储文件的元数据和数据块指针。这种设计使得文件系统具有更高的灵活性,例如支持硬链接和软链接(和windows中快捷方式类似)。
  • 文件元数据并不等同于inode,但inode是文件元数据的核心部分。通过inode,系统可以快速访问文件的元数据和实际内容。

我们所说的删除了文件,其实并没有真正的删除,只是删除了文件的索引节点(inode)与数据块(block)的映射关系,这些没有被删除的文件,在磁盘中会被打上空闲的标志,如果有后续的数据写入,会重新写入到这些未使用数据块中。如果想要恢复删除的数据需要在数据写入之前,使用特定的工具进行恢复。

在Windows的系统中也是这个原理,用户可以通过清空回收站来永久删除这些文件。

原因分析

就这个奇葩问题就折腾了我好2天时间解决!我真的太难了!!

前边已经说过了,我删除的地图切片放在回收站里了,切片数据为256x256的png图片,非常多,大约有8个GB的文件,导致回收站加载的非常慢。如下图所示我的地图切片数据放在F盘内,而我的回收站属性F盘的大小竟然设置了22047MB的大小!!因此删除的文件小于22G都会放在回收站里面,这么大量的数据加载当然会很慢!建议把这个数据设置小一点(根据情况设置吧,懂得原理就好说了)。


解决方案

方法1. 快速处理

  • 强制终止卡死进程并重启
    • 按 Ctrl+Shift+Esc 打开任务管理器,找到并结束 "文件资源管理器" 或清理软件进程。
    • 右键任务栏空白处,选择 "退出资源管理器",再在任务管理器 "文件→运行新任务" 中输入 explorer 重启。
    • 重启电脑,避免后台程序占用回收站文件。

对我遇到遇到的问题不起作用

方法2.用命令行强制清空回收站(亲测有效)

在Windows中我们所说的回收站,其实是一个文件夹,是一个存放在每个磁盘下的隐藏文件夹$Recycle.bin,通过下图操作可查看到。而在桌面上的显示的回收站是将每个磁盘的$Recycle.bin进行了汇总。

右键开始菜单,选择 "Windows 终端(管理员)"或 "命令提示符(以管理员身份运行)"(Win10)。

输入并执行以下命令,按回车:

cmd 复制代码
#清空全部回收站
rd /s /q %systemdrive%\$Recycle.bin

我的问题出现在F盘,若其他分区也有回收站问题,依次执行如下代码,:

dos 复制代码
rd /s /q  C:\$Recycle.bin
rd /s /q  D:\$Recycle.bin
rd /s /q  E:\$Recycle.bin
rd /s /q  F:\$Recycle.bin

执行后回收站会重建,可正常扫描和清空。

运行完成后,火绒软件的垃圾清理也不会卡死了,问题得到解决。

方法3.修复系统文件与组件

在管理员终端中依次执行(每步完成再下一步,耗时较长):

dos 复制代码
sfc /SCANNOW

Dism /Online /Cleanup-Image /ScanHealth

Dism /Online /Cleanup-Image /CheckHealth

Dism /Online /Cleanup-Image /RestoreHealth

完成后重启电脑,再尝试扫描。

检查并修复磁盘错误

管理员终端中执行(将 c: 改为目标盘符,需重启后生效):

dos 复制代码
chkdsk c: /r

提示 "无法立即执行" 时,输入 y 并回车,重启后系统会在开机时自动检查修复(耗时比较长,我用这个方法,检查了一个多小时)。

小结

  • 我先是使用的方法1,结果不行。然后我有使用了方法3,最后使用方法2问题的到解决的。 我在执行方法3的过程中也检查出存在损坏的文件并修复了,重复运行后没有检查出问题,由于我的文件很多使用方法2,运行了一晚上才删除完的。
  • 每个分区都会自带一个回收站,哪个分区有问题,删除哪个!
  • 关于数据存储的问题,需要深入了解。
相关推荐
石像鬼₧魂石4 小时前
Termux ↔ Windows 靶机 反向连接实操命令清单
linux·windows·学习
通往曙光的路上6 小时前
授权vvvvvv
java·开发语言·windows
晨尘光7 小时前
【Windows 下FlatBuffers 编译.fbs文件并应用】
c++·windows
TE-茶叶蛋8 小时前
Windows安装Flutter开发环境
windows·flutter
库库林_沙琪马9 小时前
1、nacos
windows
徐子元竟然被占了!!10 小时前
Linux-top
linux·运维·windows
Bruce_Liuxiaowei10 小时前
Windows系统映像劫持:网络安全中的“李代桃僵”战术
windows·安全·web安全
bleach-10 小时前
内网渗透之横向移动&持久化远程控制篇——利用ipc、sc、schtasks、AT,远程连接的winrm,wmic的使用和定时任务的创建
网络·windows·安全·web安全·网络安全·系统安全·安全威胁分析
Nerd Nirvana10 小时前
WSL——Windows Subsystem for Linux流程一览
linux·运维·服务器·windows·嵌入式·wsl·wsl2