村长 发表于 2020-9-4 00:14:39

【优创比拼】Linux如何删除包含千万个文件的大目录


测试目录:/home/test
模拟写入3000万个空文件:
echo test{01..30000000} | xargs touch

结果把inode都给占满了:http://cdn.u1.huluxia.com/g4/M03/15/23/rBAAdl8_Q3OAZKrUAACYx2tvXMw914.jpg
耗时8分钟,就只创建了2200多万个空文件:http://cdn.u1.huluxia.com/g4/M03/15/23/rBAAdl8_Q3OAL3iRAAA2mdhgXNM877.jpg
接下来先说错误的删除方法
rm -rf *.*http://cdn.u1.huluxia.com/g4/M03/15/23/rBAAdl8_Q3OAUXuMAAA8H60_QIc124.jpg
可以看到压根就没删掉
ls | xargs rm -rfhttp://cdn.u1.huluxia.com/g4/M03/15/23/rBAAdl8_Q3SARQolAAA0qN2-4JI819.jpg
提示内存已被耗尽

正确的删除方式:
1.直接删除父目录(速度:很慢)
# rm -rf test/http://cdn.u1.huluxia.com/g4/M03/15/23/rBAAdl8_Q3WAEKPDAABFEimS3k8511.jpg
耗时39分钟
2.使用find命令配合 -delete 选项(速度:最慢!)http://cdn.u1.huluxia.com/g4/M03/15/23/rBAAdl8_Q3WAKMThAAA0WzbipZU211.jpg
由于是空文件,这里使用-empty选项,实际应用场景应该使用-size 选项来指定文件大小进行删除

最快最推荐的方法(速度:极快):
创建一个空文件夹,使用rsync -a --delete选项,将空文件夹内容与目标文件夹进行同步http://cdn.u1.huluxia.com/g4/M03/15/23/rBAAdl8_Q3WAVCG3AABRAHy4R30417.jpg
总结
rsync是最快的方法,当然如果会使用Perl的话,还可以更快,但是并不是所有人都会,所以介绍一个最容易上手的方法。
本不想介绍rm 和 find 这两种方法(即慢又不实用),但是为了严谨的告诉大家rsync比较好,所以就都贴上测试图片啦。
页: [1]
查看完整版本: 【优创比拼】Linux如何删除包含千万个文件的大目录

村长黑科技是专业提供项目资源的服务的村长黑科技平台,如合购网赚项目、引流推广软件、软件程序开发等项目就选村长黑科
技平台参与或发布项目定制各种软件就来村长黑科技平台

本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件的破解分析文章、破解分析视频、补丁、注册机和注册信息,

仅限用于学习和研究软件安全的目的。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习破解分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,

请购买注册正版软件,获得正版优质服务!不允许将上述内容私自传播、销售或者其他任何非法用途!否则,产生任何法律责任,一切后果请用户自负,与本网站无关!如有侵权或非法用途请举报!请发送到邮箱:cxphj8@foxmail.com

《意见反馈》或《截图指定页面备注》发送到邮件,收到后24小时内删除,禁止用户学习使用关掉用户【学习使用权】!