首页 运维 Linux 查看内容

Linux如何删除包含千万个文件的大目录

2020-5-14 12:20 |来自: 互联网 2688 0

摘要: 测试目录:/home/test模拟写入3000万个空文件:echo test{01..30000000} | xargs touch结果把inode都给占满了:耗时8分钟,就只创建了2200多万个空文件:接下来先说错误的删除方法rm -rf *.*可以看到压根就没删掉ls | xargs rm -rf提示内存已被耗尽正确的删除方式:1.直接删除父目录(速度:很慢)# rm - ...
关键词: 方法 文件 文件夹 速度 rsync test 但是 所以 最快 分钟

测试目录:/home/test

模拟写入3000万个空文件:

echo test{01..30000000} | xargs touch


结果把inode都给占满了:



耗时8分钟,就只创建了2200多万个空文件:



接下来先说错误的删除方法

rm -rf *.*

可以看到压根就没删掉

ls | xargs rm -rf


提示内存已被耗尽


正确的删除方式:

1.直接删除父目录(速度:很慢)

[root@localhost home]# rm -rf test/


耗时39分钟

2.使用find命令配合 -delete 选项(速度:最慢!)


由于是空文件,这里使用-empty选项,实际应用场景应该使用-size 选项来指定文件大小进行删除


最快最推荐的方法(速度:极快):

创建一个空文件夹,使用rsync -a --delete选项,将空文件夹内容与目标文件夹进行同步



总结

rsync是最快的方法,当然如果会使用Perl的话,还可以更快,但是并不是所有人都会,所以介绍一个最容易上手的方法。

学妹本不想介绍rm 和 find 这两种方法(即慢又不实用),但是为了严谨的告诉大家rsync比较好,所以就都贴上测试图片啦。

希望大家能喜欢学妹的技术分享,转发分享给更多人叭!

本文出处: https://www.toutiao.com/a6800878210654405128/
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部