AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 46852
Accepted
Amandasaurus
Amandasaurus
Asked: 2009-07-29 00:26:15 +0800 CST2009-07-29 00:26:15 +0800 CST 2009-07-29 00:26:15 +0800 CST

在庞大的目录树上执行 rm -rf 需要几个小时

  • 772

我们使用 rsnapshot 进行备份。它保留了许多备份文件的快照,但它确实删除了旧的。这很好。rm -rf然而,在一个庞大的目录树上做一个大约需要 7 个小时。文件系统是 XFS。我不确定那里有多少个文件,但可能有数百万个。

有没有办法加快速度?是否有任何命令可以执行相同的操作rm -rf并且不需要花费数小时和数小时?

performance filesystems files rsnapshot
  • 8 8 个回答
  • 20376 Views

8 个回答

  • Voted
  1. Best Answer
    David Pashley
    2009-07-29T00:41:31+08:002009-07-29T00:41:31+08:00

    不。

    rm -rf对文件系统进行递归深度优先遍历,调用unlink()每个文件。导致进程缓慢的两个操作是opendir()/readdir()和unlink(). opendir()并且readdir()取决于目录中的文件数。unlink()取决于被删除文件的大小。加快此过程的唯一方法是减少文件的大小和数量(我怀疑这不太可能)或将文件系统更改为具有更好特性的这些操作。我相信 XFS 对于大文件上的 unlink() 很有用,但对于大型目录结构来说不是很好。您可能会发现 ext3+dirindex 或 reiserfs 更快。我不确定 JFS 的表现如何,但我确信有很多不同文件系统性能的基准。

    编辑:XFS 似乎在删除树方面很糟糕,所以一定要改变你的文件系统。

    • 40
  2. Greg Work
    2009-07-29T00:45:40+08:002009-07-29T00:45:40+08:00

    作为替代方案,将目录移到一边,使用相同的名称、权限和所有权重新创建它,然后重新启动任何关心该目录的应用程序/服务。

    然后,您可以在后台“nice rm”原始目录,而不必担心长期中断。

    • 26
  3. James
    2009-09-22T12:52:36+08:002009-09-22T12:52:36+08:00

    确保为 XFS 设置了正确的挂载选项。

    将 -ologbufs=8,logbsize=256k 与 XFS 一起使用可能会使您的删除性能增加三倍。

    • 8
  4. ash108
    2009-08-20T07:02:32+08:002009-08-20T07:02:32+08:00

    无论使用什么文件系统,都可以将 ionice 用于像这样的 IO 密集型操作。
    我建议这个命令:

    ionice -n7 nice rm -fr 目录名

    它将很好地用于具有重 IO 负载的服务器上的后台操作。

    • 6
  5. James
    2009-07-29T00:36:53+08:002009-07-29T00:36:53+08:00

    如果您在文件级别有效地执行 rm,那么这将需要很长时间。这就是为什么基于块的快照如此出色的原因:)。

    您可以尝试将 rm 拆分为单独的区域并尝试并行执行,但我可能不希望它有任何改进。众所周知,XFS 在删除文件时会遇到问题,如果这是您所做工作的很大一部分,那么可能会考虑使用不同的文件系统。

    • 5
  6. Nick Anderson
    2010-01-29T13:31:07+08:002010-01-29T13:31:07+08:00

    我知道这是旧的,但我想我会提出一个建议。您正在按顺序删除这些文件,执行并行 rm 操作可能会加快速度。

    http://savannah.nongnu.org/projects/parallel/ 并行通常可以用来代替 xargs

    因此,如果您删除 deltedir 中的所有文件

    find -t f deletedir | parallel -j 10 rm
    

    那只会让您删除空目录结构。

    注意:您可能仍会遇到上述文件系统限制。

    • 2
  7. Moo
    2009-07-29T00:50:37+08:002009-07-29T00:50:37+08:00

    这里的另一种选择是以这样一种方式分离数据,以便您可以垃圾和重建实际的文件系统而不是执行 rm?

    • 1
  8. RainyRat
    2009-07-29T00:38:41+08:002009-07-29T00:38:41+08:00

    如何降低命令的友好度?喜欢:

    nice -20 rm -rf /path/to/dir/
    
    • 0

相关问题

  • 通过 SNMP 导出性能计数器

  • 知道解析速度测试结果的方法吗?

  • 加快 MSSQL 快照复制到 SQLExpress 副本的速度

  • 聚集索引与非聚集索引?

  • 使用大量 javascript 的页面上的鱿鱼速度很慢

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve