Linux 删除海量文件 rm -f 会卡死怎么破?
目录下有大量用户上传的照片,现在连 ls, du, find 都会卡住。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
目录下有大量用户上传的照片,现在连 ls, du, find 都会卡住。。。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(8)
http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux
删除50万个文件,各种方法的速度对比:
先创建50万个文件:
for i in $(seq 1 500000); do echo testing >> $i.txt; done
各种删除当前目录文件方法,先进入该目录(比如PHP的sessions目录),然后执行以下命令:
time rm -f * 删除失败,返回 /bin/rm: Argument list too long
time find ./ -type f -exec rm {} ;
time find ./ -type f -delete
time rsync -a --delete EmptyDir/ BigDir/
time perl -e 'for(<*>){((stat)[9]<(unlink))}'
结果:
perl用了1分钟
rsync用了3分钟
find with -delete用了5分钟
find with -exec用了14分钟
直接用rm结果是删除失败.
引用来自“田左俭”的评论
大量文件删除不要用rm,用
rsync --delete-before,这个命令非常快的说。
如果你懂linux系统编程,直接通过ls读出那个文件夹的i节点,然后调用系统API直接干掉那个节点
还是win方便.
powershell 表示毫无压力..
文件名有规律的话,写脚本或者程序具体指定到单个文件,进行循环的方式删除
文件名多长,删多少次,就可以删完了.
分目录
大量文件删除不要用rm,用
rsync --delete-before,这个命令非常快的说。