1. <tr id='8xgm5'><strong id='8xgm5'></strong><small id='8xgm5'></small><button id='8xgm5'></button><li id='8xgm5'><noscript id='8xgm5'><big id='8xgm5'></big><dt id='8xgm5'></dt></noscript></li></tr><ol id='8xgm5'><table id='8xgm5'><blockquote id='8xgm5'><tbody id='8xgm5'></tbody></blockquote></table></ol><u id='8xgm5'></u><kbd id='8xgm5'><kbd id='8xgm5'></kbd></kbd>

      <fieldset id='8xgm5'></fieldset>
      <span id='8xgm5'></span>
      <dl id='8xgm5'></dl>
      <i id='8xgm5'></i>

      <code id='8xgm5'><strong id='8xgm5'></strong></code>
      <ins id='8xgm5'></ins>

      <acronym id='8xgm5'><em id='8xgm5'></em><td id='8xgm5'><div id='8xgm5'></div></td></acronym><address id='8xgm5'><big id='8xgm5'><big id='8xgm5'></big><legend id='8xgm5'></legend></big></address>

        <i id='8xgm5'><div id='8xgm5'><ins id='8xgm5'></ins></div></i>
        1. 设置自动清理Linux系统中n天前的文件的方法

          • 时间:
          • 浏览:11
          • 来源:124软件资讯网

              服务器每周会发生一次全局备份文件  ,巨细约100G左右  ,需要定期清算  。

              事情时间网站会见大  ,服务器I/O高的时间删除大数据会对服务器状态发生欠好的影响 。于是想使用企图使命自动执行  。

              在我的备份目录/bakcup下  ,每次备份文件均以日期形式命名目录名:

              代码如下:

              # ls

              2013-12-23 2014-01-06 2014-01-20 2014-02-03

              2013-12-30 2014-01-13 2014-01-27 2014-02-10

              删除部门备份同时保留部门  ,可以使用find下令  ,如我要保留最近周围备份的文件  ,每次备份距离七天:

              代码如下:

              # find /bakcup/ -maxdepth 1 -type d -mtime +28

              /bakcup/2014-01-06

              /bakcup/2014-01-13

              /bakcup/2013-12-23

              /bakcup/2013-12-30

              -maxdepth 1:设置查找目录深度为1  ,只在/backup目录下查找  ,如不加此参数会将下级目录中的文件都列出

              -type d:设置查找类型为目录

              -mtime +28:查找28天前的目录

              查找竣事后可用-exec参数毗连删除下令

              代码如下:

              rsync --delete-before -d /data/test/ {} \;

              以是  ,整个下令就是:

              代码如下:

              # find /bakcup/ -maxdepth 1 -type d -mtime +28 -exec rsync --delete-before -d /data/test/ {} \;

            < p>

              最后可以把下令放入剧本 ,设置crontab自动执行 。

              提醒:

              使用下令前  ,应先在服务器上试用查找部门的下令  ,如只查找出要清算的目录 ,则可以继续  。

              不清除某些系统会将./目录查找出来  ,一定要看清晰  ,防止泛起意外情形  。

              另外可将-exec替换为-ok ,效果相同  ,在删除条件醒用户确认  。

              PS:rm下令与rsync下令的效率比力

              rm

              rm下令大量挪用了lstat64和unlink  ,可以推测删除每个文件前都从文件系统中做过一次lstat操作  。

              lstat64的次数低于文件总数  ,另有另外的缘故原由 ,之后会在另一篇文章中说明  。

              getdirentries64这个挪用比力要害  。

              历程:正式删除事情的第一阶段 ,需要通过getdirentries64挪用  ,分批读取目录(每次约莫为4K)  ,在内存中建设rm的文件列表;第二阶段 ,lstat64确定所有文件的状态;第三阶段 ,通过unlink执行现实删除  。这三个阶段都有比力多的系统挪用和文件系统操作  。

              rsync

              rsync所做的系统挪用很少  。

              没有针对单个文件做lstat和unlink操作  。

              下令执行前期  ,rsync开启了一片共享内存 ,通过mmap方式加载目录信息  。

              只做目录同步 ,不需要针对单个文件做unlink  。

              另外  ,在其他人的评测里  ,rm的上下文切换比力多 ,会造成System CPU占用较多——对于文件系统的操作  ,简朴增添并发数并不总能提升操作速率  。