歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Unix系統下Find命令的三個高級應用

Unix系統下Find命令的三個高級應用

日期:2017/2/28 16:47:12   编辑:Linux教程

  Find命令是Unix操作系統中一個很強大的工具。這個命令除了可以用來定位文件外,還有其他許多很實用的用途。如可以用來備份文件、交互式刪除文件、列舉文件清單等等。只要靈活應用這些功能的話,那麼對於系統工程師的日常工作就能夠起到事半功倍的效果。

  一、利用Find命令對文件進行備份。

  如在Unix操作系統中有一個用戶為Oracle。系統會在Home目錄下自動為這個用戶創建一個子目錄Oracle。現在用戶希望能夠對自己目錄下的文件進行自動備份,以防止文件的以外丟失。如下圖所示,現在系統工程師准備把用戶目錄下面的文件備份到backup目錄下面,並把文件名字重命名為backup。這個功能可以實現呢?答案當然是肯定的。可以利用find命令結合cp命令來實現這個功能。

  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個小時之內修改過的文件,從而提高備份的頻率。為此系統工程師可以根據用戶的需要來調整文件備份的頻率。不過筆者認為,一般情況下文件備份一天一次即可。

Copyright © Linux教程網 All Rights Reserved