天天看点

老男孩教育每日一题-2017-04-18:命令风暴:如何快速删除Linux中海量小文件?

这道题考察的是当一个命令接上很多参数(几十万以上)会报一个错误:Argument list too long

因此你没有办法touch这么多文件,也没有办法一次性删除这么多文件。

<code>[root@oldboydata]</code><code># touch test{1..500000}</code>

<code>-</code><code>bash</code><code>:</code><code>/bin/touch</code><code>: Argument list too long</code>

那该如何解决呢?

创建测试文件

<code>mkdir</code><code>/data</code> <code>&amp;&amp; </code><code>cd</code> <code>/data</code>

<code>for</code> <code>i </code><code>in</code> <code>{1..50};</code><code>do</code> <code>eval</code> <code>touch</code> <code>test</code><code>{$((i-1))0000..${i}0000};</code><code>done</code>

#尝试使用rm删除

<code>[root@oldboydata]</code><code># rm -f *</code>

<code>-</code><code>bash</code><code>:</code><code>/bin/rm</code><code>: Argument list too long</code>

解决方法:

<code>1)  </code><code>ls</code><code>|</code><code>xargs</code> <code>rm</code> <code>-f</code>

<code>2)  </code><code>find</code> <code>. -</code><code>type</code> <code>f|</code><code>xargs</code> <code>rm</code> <code>-f</code>

<code>3)  </code><code>mkdir</code> <code>/null</code>

<code>rsync</code><code>-av --delete </code><code>/null/</code> <code>/tmp/</code>

删除文件消耗时间测试:

[

<code>root@oldboy/]</code><code># cd data</code>

<code>[root@oldboydata]</code><code># time ls |xargs rm</code>

<code> </code> 

<code>real    0m7.651s</code>

<code>user    0m2.273s</code>

<code>sys    0m4.446s</code>

#再次创建测试文件

<code>[root@oldboy/]</code><code># cd data/</code>

<code>[root@oldboydata]</code><code># time find . -type f|xargs rm -f</code>

<code>real    0m7.482s</code>

<code>user    0m0.426s</code>

<code>sys     0m5.096s</code>

<code>[root@oldboy~]</code><code># mkdir /null</code>

<code>[root@oldboy~]</code><code># time rsync -a --delete /null/ /data/</code>

<code>real    0m10.572s</code>

<code>user    0m0.724s</code>

<code>sys    0m7.893s</code>

今天是老男孩教育每日一题陪伴大家的第30天。

对于题目和答案的任何疑问,请在博客评论区留言。

往期题目索引

<a href="http://lidao.blog.51cto.com/3388056/1914205" target="_blank">http://lidao.blog.51cto.com/3388056/1914205</a>

本文转自 李导 51CTO博客,原文链接:http://blog.51cto.com/lidao/1916945

继续阅读