加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

Unix系统下Find命令的应用

发布时间:2016-08-09 16:13:02 所属栏目:Unix 来源:站长网
导读:Find命令是Unix操作系统中一个很强大的工具。这个命令除了可以用来定位文件外,还有其他许多 很实用的用途。如可以用来备份文件、交互式删除文件、列举文件清单

Find命令是Unix操作系统中一个很强大的工具。这个命令除了可以用来定位文件外,还有其他许多 很实用的用途。如可以用来备份文件、交互式删除文件、列举文件清单等等。只要灵活应用这些功能的 话,那么对于系统工程师的日常工作就能够起到事半功倍的效果。

一、利用Find命令对文件进行备份。

如在Unix操作系统中有一个用户为oracle。系统会在Home目录下自动为这个用户创建一个子目录 Oracle。现在用户希望能够对自己目录下的文件进行自动备份,以防止文件的以外丢失。如下图所示, 现在系统工程师准备把用户目录下面的文件备份到backup目录下面,并把文件名字重命名为backup。这 个功能可以实现呢?答案当然是肯定的。可以利用find命令结合cp命令来实现这个功能。

Unix系统下Find命令的应用

1、文件的最后修改时间。

在Unix系统的文件属性中,有非常重要的三个时间截,分别为文件最后修改时间、文件最后访问时 间、inode节点最后修改时间。一旦用户对某个文件执行了更改操作,则文件inode节点里的最后修改时 间就会被更新了。需要注意的是,在Unix操作系统中目录也被当作文件的一种,为此对目录的修改,如 创建一个目录或者更改目录的名字也会被当作文件的修改来对待。另外文件修改后,只会更改文件的修 改时间,而不会影响到目录的最后修改时间。所以如果一个目录下有一个文件更改了,则在备份的时候 只需要备份这个更改的文件即可,而不需要备份这个目录下其他没有更改的文件。

出于备份效率的考虑,在备份的时候只备份当天修改过的文件。为此在备份时首先要做的就是找到 这些最近更改过的文件。这个解决的思路就是从这个文件的最后修改时间入手。在find命令中有一个参 数为mtime,它表示修改时间少于x天。如果我们把这个参数设置为1,那么find命令就可以找出在最近 一天内修改过的文件。为此只需要对这些找到的文件进行备份即可。

2、重命名文件。

需要备份的文件找到之后,接下去要做的就是利用cp命令把这些文件复制到其他目录中去。但是这 里还需要做的一件事情是在复制过去后需要把文件进行重命名,即在原来文件的后面加上.backup,以 提醒用户这些是备份文件,不能够删除或者修改。要实现这个功能的话,就需要用到文件名的占位符号 。如果利用cp命令复制文件后同时批量更改文件的名字,只需要使用 cp {} {}.backup即可。这里的{} 符号就是文件名的占位符号。cp {} {}.backup这个命令的功能就是先把文件复制到一个特定的目录中 ,然后在对复制过去的每个文件进行重命名,后面都依次加上.backup内容。

为此要实现上面文件备份的需要,只需要使用命令

find /home/oracle –mtime 1 –exec cp {} /backup/{}.backup ;即可。

执行这个命令后,系统会在用户主目录下寻找所有修改时间少于1天的文件,并把找到的文件复制到 /backup目录下。并在每一个原始文件后面增加一个扩展名.backup。最后的;是一个固定格式必须要有 。然后系统工程师只需要把这个命令加入到cron中,让操作系统在每天中午或者其他空闲的时间周期性 执行这个命令即可。如此的话,操作系统就会自动对用户的文件进行备份,以防止文件意外损坏或者修 改所造成的损失。

另外需要注意的是,在Unix操作系统中find命令只可以找到最近一天修改的文件。而在Linux操作系 统中,还有mmin参数,这个参数是以分钟为单位,如可以找到那些最近4个小时或者1个小时之内修改过 的文件,从而提高备份的频率。为此系统工程师可以根据用户的需要来调整文件备份的频率。不过笔者 认为,一般情况下文件备份一天一次即可。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读