如何清除外部驱动器中的 lost+found 目录?

如何清除外部驱动器中的 lost+found 目录?

总结:使用 ext4 文件系统格式化外部硬盘,使用 fsck 修复它,并且lost+found其中有一个包含数千个不需要的文件的目录。我知道无法lost+found删除,但如何删除这些不需要的文件并确保 fsck 不会在重新启动时再次填充这些相同的文件?


我已经阅读过以下相关链接:

但无法找到解决我的问题的方法。


我买了一个新硬盘,并在其中加载了几 GB 的数据,但想从头开始,所以我通过 删除了硬盘上的所有文件$ rm -rf ./*。然后我注意到这个硬盘被格式化为 FAT 硬盘,而我只想要一个 ext4 分区,所以我使用 parted 来格式化硬盘 ( /dev/sda):

$ sudo parted /dev/sda
(parted) p
<some output indicating 2 partitions on the drive>
(parted) rm 1
(parted) rm 2
(parted) p
<I verify that there are no more partitions>
(parted) mklabel gpt
<parted tells me that there's an existing filesystem that will be overwritten and I confirm>
(parted) mkpart primary ext4 0% 100%
<confirmation stuff as well>
(parted) p
<verify that all is as it should be... or so I thought>
(parted) q

退出并尝试安装设备后,我无法安装新分区。检查文件系统后,我发现分区已损坏并尝试$ sudo fsck -y /dev/sda1(sda1 是驱动器上新的、唯一的分区,格式为 ext4)。这成功了,并将我的分区格式化为 ext2,所以我返回并使用 parted 重复重新格式化步骤并尝试$ sudo fsck -yt ext4 /dev/sda1,它似乎工作得很好。

lost+found我现在可以挂载文件系统,它仍然是 ext4。但是,现在驱动器中有一个包含数千个文件的目录。它由 root:root 拥有,即使使用$ sudo rm -rf lost+found,我也无法删除它。它不断吐出rm: cannot remove '#<name of file>': Operation not permitted我试图删除的每个文件。chmod 和 chown 都无法帮助删除位于此 lost+found 目录中的文件。

然后我尝试$ sudo su使用# cd lost+found并检查文件的属性,# lsattr但即使以 root 身份,我仍然得到lsattr: Operation not supported While reading flags on ./#<name of the file>

我不需要系统上的任何文件。我在本地计算机和主机之间玩弄 rsync,这些都是我删除的文件。我知道我不需要它们中的任何一个(除了本地计算机上存在的所有这些文件外,我还有其他备份),所以我只想摆脱这个该死的lost+found目录,但它很顽固。


因此,综上所述:

我该怎么办?我的下一步是什么?我是否应该从程序输出中提供更多信息来帮助解决这个问题?

重新格式化驱动器会更容易吗?我已经尝试过两次了,但每次它都无法挂载$ fsck -t ext4 /dev/sda1(我-y也在其中添加了标志,因为我不想等待它要求的数百万次确认),所以我又一次陷入了困境。我知道这些lost+found文件是由 fsck 程序生成的,因为我将-y选项传递给了它:输出中有部分内容指定“驱动器上有现有数据并且可以恢复,因此应该将fsck这些文件移动到lost+found?”并且它会自动传递肯定的答案,因此目录被创建并填充了数千个文件。是因为我将此分区指定为主分区吗?它应该扩展吗(仅保存数据文件)?

任何帮助都将不胜感激!虽然这些文件不会占用硬盘上的太多空间(约 1%),但我还是很感激有人能帮我解决这个问题,因为我想了解为什么即使是 root 也无法删除这些文件,以及我在格式化驱动器时做错了什么,导致我每次都遇到这种情况。


编辑:

通过 以 root 身份登录后$ sudo su,我可以查看其中的文件lost+found,并尝试测试lost+found目录本身,查找锁定目录的进程以及目录中的第一个文件,以查看是否有任何东西正在使用它:

$ sudo su
# lsof lost+found
<no output>
# fuser lost+found
<no output>
# lsof lost+found/#51817
<no output>
# fuser lost+found/#51817
<no output>

看起来没有其他进程锁定这些文件。使用 进行检查后# lsattr,有几个文件带有该i标志,但还有更多文件没有该标志。

此外,正如@PabloBianchi 在评论中指出的那样,由于 ext* 格式的文件系统总是会有一个lost+found目录,我通过修改标题澄清了这个问题:不是删除该目录,而是我怎样才能清除它,以便我知道我不需要恢复的文件不会浪费我的驱动器空间?

答案1

创建 ext4 类型的分区不会将 ext4 文件系统放到该分区上。您得到的可能是以前的文件系统留下的东西/垃圾。创建分区后,使用以下命令将文件系统放到该分区上:

sudo mkfs.ext4 /dev/sda1

这应该是一个空文件系统,其中只有空的 lost+found 目录。

相关内容