Linux下正确快速删除海量文件的方法分享
<p><span><strong>前言</strong></span></p>
<p>
注意本文说的“海量”并不是指体积大,而是指数量,比如一个目录下有数百万个小文件。</p>
<p>
最近在优化服务器时发现postfix下的maildrop目录和clientmqueue目录下发现有大量的文件,进入这些目录里使用<code>ls</code>命令是愚蠢的做法,而直接执行<code>rm * </code>, 没有任何反应,文件数量也没有减少,也就是说,在海量文件目录里直接使用<code>rm</code>命令进行删除是无效的。</p>
<p>
<span><strong>那么正确的方法是什么呢?有两种方法可选:</strong></span></p>
<p>
<strong>第一种:</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_687741">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">find</code> <code class="bash plain">/path/to/directory</code> <code class="bash plain">-</code><code class="bash functions">type</code> <code class="bash plain">f -</code><code class="bash functions">exec</code> <code class="bash functions">rm</code> <code class="bash plain">{} \;</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>第二种:</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_380883">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">ls</code> <code class="bash plain">-1 </code><code class="bash plain">/path/to/directory</code> <code class="bash plain">| </code><code class="bash functions">xargs</code> <code class="bash plain">-I{} </code><code class="bash functions">rm</code> <code class="bash plain">{}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
上面这两种方法可以成功的删除海量文件,速度也很快。但还有一种更好的方法,比如要删除上面提到的clientmqueue目录,里面全部是一个一个的邮件,用下面的方法:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_331521">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">service sendmail stop</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash functions">cd</code> <code class="bash plain">/var/spool</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash functions">mv</code> <code class="bash plain">clientmqueue clientmqueue-todelete</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash functions">mkdir</code> <code class="bash plain">clientmqueue</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash functions">chown</code> <code class="bash plain">--reference=clientmqueue-todelete clientmqueue</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash functions">chmod</code> <code class="bash plain">--reference=clientmqueue-todelete clientmqueue</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash plain">service sendmail start</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash functions">rm</code> <code class="bash plain">-rf clientmqueue-todelete</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
上面的方法是将目录重命名,然后使用了 <code>--reference </code>引用参数来重建目录,然后删除重命名的目录。直接删除目录的方法速度是十分的快。也可以留着备份不删。更安全。</p>
<p>
<span><strong>总结</strong></span></p>
<p>
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。</p>
頁:
[1]