<ins id='sry4s'></ins>
  • <i id='sry4s'><div id='sry4s'><ins id='sry4s'></ins></div></i>

      <span id='sry4s'></span>

        1. <acronym id='sry4s'><em id='sry4s'></em><td id='sry4s'><div id='sry4s'></div></td></acronym><address id='sry4s'><big id='sry4s'><big id='sry4s'></big><legend id='sry4s'></legend></big></address>
          <dl id='sry4s'></dl>

        2. <i id='sry4s'></i>

          <code id='sry4s'><strong id='sry4s'></strong></code>
          <fieldset id='sry4s'></fieldset>

          1. <tr id='sry4s'><strong id='sry4s'></strong><small id='sry4s'></small><button id='sry4s'></button><li id='sry4s'><noscript id='sry4s'><big id='sry4s'></big><dt id='sry4s'></dt></noscript></li></tr><ol id='sry4s'><table id='sry4s'><blockquote id='sry4s'><tbody id='sry4s'></tbody></blockquote></table></ol><u id='sry4s'></u><kbd id='sry4s'><kbd id='sry4s'></kbd></kbd>
          2. 设置自动清理Linux系统中n天前的文件的方法

            • 时间:
            • 浏览:10
            • 来源: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占用较多——对于文件系统的操作  ,简朴增添并发数并不总能提升操作速率 。