rm -rf 需要很长时间

rm -rf 需要很长时间

我有一个目录./aggregated/,其中有 7550 个子目录,每个子目录包含 250 个文件。aggregated总共有 5.5GB。

我尝试过aggregated通过删除rm -rf aggregated,但花了几个小时。这是通过 USB3 连接的外部 2.5 HDD。它的文件系统是 ext4。它是加密的。机器的主磁盘驱动器是 SSD。到目前为止,我还没有能够成功删除该驱动器。

机器并不繁忙,并且拥有充足的 CPU 和 RAM 资源。有问题的驱动器是 sdb。它几乎是全新的 - 不时使用它不到 1 年,到目前为止还没有出现问题,我不认为这是驱动器问题。

pc ➜  code git:(master) ✗  lsblk
NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                                             8:0    0 465.8G  0 disk  
├─sda1                                          8:1    0   731M  0 part  /boot
├─sda2                                          8:2    0     1K  0 part  
└─sda5                                          8:5    0   465G  0 part  
  └─sda5_crypt                                253:0    0   465G  0 crypt 
    ├─mint--vg-root                           253:1    0 433.1G  0 lvm   /
    └─mint--vg-swap_1                         253:2    0    32G  0 lvm   
      └─cryptswap1                            253:3    0    32G  0 crypt [SWAP]
sdb                                             8:16   0 931.5G  0 disk  
└─sdb1                                          8:17   0 931.5G  0 part  
  └─luks-04638d71-b455-4a87-b0fa-8f0b8d96f97b 253:4    0 931.5G  0 crypt /media/myuser/toshiba

中的条目/etc/mtab是:

/dev/mapper/luks-04638d71-b455-4a87-b0fa-8f0b8d96f97b /media/myuser/toshiba ext4 rw,nosuid,nodev,relatime,data=ordered 0 0

编辑:

我发现,如果我cd进入文件夹并执行 ,我可以删除所有内容rm -rf *。如果我尝试删除现在为空的aggregated文件夹,rm -rf aggregated它只会停留在那里。不确定如何调试/排除故障。

答案1

在 Linux 中删除文件的最快方法之一是使用 Perl。导航到父目录并运行以下命令:

perl -e 'for(<*>){((stat)[9]<(unlink))}'

如果你对 Perl 不太熟悉,可以使用带标志find的命令-delete来删除文件。以下命令将删除所有文件:

find ./ -type d,f -delete

注意:使用-type d,f将删除文件和目录,如果只想删除文件,请使用-type f

这是一篇文章基准测试批量删除文件来自Linux系统。

答案2

通常,如果目录中有太多且很大的文件,运行该命令rm -rf将无济于事,因为它可能导致服务器挂起,这是我通常使用的命令:

ls -1 | xargs rm -rfv

一些输出:

# ls -1 | xargs rm -rfv
removed 'NameOfFileOrDir'

笔记:

  • 您必须位于将被删除的目录中
  • ls -f:将列出您的文件
  • xargs rm -rfv:将使用详细操作运行删除

希望这会有所帮助。

相关内容