良許 | Linux下處理隱私騷操做!

每一個人都有本身的隱私 尤爲是數字信息時代更是如此 小到本身寫下的情書 大到公司商業機密 抑或是偷偷下載的日本XXX.avi安全

這些隱私 放桌面——找死 放某個隱祕目錄——麻煩 放垃圾筒……誰會這麼幹 真想有個工具 自動幫我壓縮 自動幫我放到安全位置bash

嗯…… 良許今天就帶你實現這個過程工具

1. 工具安裝

要實現上述那個鮮爲人知的過程,咱們須要安裝兩個工具:inotify-tools 和 gzip 。測試

若是你使用的是 Ubuntu 或者其它基於 Debian 的發行版,那麼可使用 apt-get 命令安裝以上兩個工具。在其餘 Linux 發行版上,則須要使用對應的包管理工具。.net

$ sudo apt-get install inotify-tools gzip

2. inotify-tools 使用詳解

顧名思義,inotify-tools 是包含了不少工具的工具集。咱們首先來測試一下,若是一個目錄裏有新文件建立時,會捕捉到什麼事件。這裏咱們將使用到一個名爲 inotifywatchinotify-tools 的工具。code

咱們先在任意位置建立一個名爲 incoming 的新目錄:orm

$ mkdir incoming

而後再執行如下命令開始監測此目錄:視頻

$ inotifywatch -v incoming

這個命令將使用 inotify 工具來監視 incoming 目錄中的全部文件系統事件。咱們使用這個工具的目的就是來監測在目標目錄下建立新文件時會有什麼事件產生。blog

在這裏,-v 選項打印工具的輸出信息。同時,它還有超時選項 -t ,但在這裏咱們未指定,因此它將持續收集事件,直到咱們按 Ctrl + C 纔會退出。事件

命令運行以後終端將會打印如下信息:

接下來,打開一個新的終端窗口並切換到剛剛創建的 incoming 目錄。而後再使用 touch 命令建立名爲 newfile 的新文件。

$ cd incoming/
$ touch newfile

如今咱們再回到第一個終端窗口,按下 CTRL+C 中止 inotifywatch 命令。咱們將獲得如下信息:

在結果信息裏,咱們能夠看到 inotifywatch 捕獲到 4 個事件,包括:屬性、建立、打開、寫入並關閉。這 4 個事件都是由 touch newfile 這個命令產生的。

固然,這幾個事件都只是 inotifywatch 所能捕獲的衆多事件的一小部分,更多事件咱們能夠在它的主頁上查看。

可是,不少狀況下咱們並不須要太多事件。假如咱們只對下面兩個事件感興趣:

  • create :在目標目錄中建立文件時
  • moved_to :當文件從另外一個位置移動到目標目錄時

咱們再來使用 inotifywatch 工具,可是此次只讓它監視這兩個事件。咱們可使用如下命令來達到這個目的:

$ inotifywatch -v -e create -e moved_to incoming

而後再切換到第二個終端窗口中,咱們建立一個新的文件,再更改它的內容。

再以後,咱們在 /tmp 目錄下隨便再建立個文件,再將它移動到目標目錄。整個過程如如下命令所示:

$ touch incoming/created
$ echo Testing123 >> incoming/created
$ touch /tmp/created2
$ mv /tmp/created2 incoming/

接着咱們再返回第一個終端窗口,按下 CTRL + C 中止 inotifywatch 。咱們將看到如下輸出:

從以上結果咱們能夠看出,inotifywatch 只捕獲了兩個事件:create 及 moved_to 。而對於其它事件,好比修改文件內容,則所有被忽略。

**正是利用了 inotifywatch 的這個能夠捕獲事件的特性,咱們能夠實現當一個目錄裏有新文件移入的時候,將其壓縮並放置到其它地方的目的。**這樣咱們就能實現將本身的私密文件丟到那個目錄,自動壓縮並存放到安全位置。固然,充分利用這些特性,咱們能夠實現更多好玩的功能。

3. 監測目錄並執行腳本

如今,咱們來一步步實現上面所提到的需求。這裏咱們使用到另一個工具:inotifywait ,它的參數及使用方法與 inotifywatch 相似,當目錄裏建立了新文件或移入了其它位置的文件,它將執行咱們所指定的腳本。

咱們首先建立一個名爲 processed 的目錄,用來保存已經處理過的文件。

$ mkdir processed

而後,建立一個名爲 watch-incoming.sh 的腳本,並添加如下內容:

#!/bin/bash

TARGET=~/incoming/
PROCESSED=~/processed/

inotifywait -m -e create -e moved_to --format "%f" $TARGET \
    | while read FILENAME
        do
            echo Detected $FILENAME, moving and zipping
            mv "$TARGET/$FILENAME" "$PROCESSED/$FILENAME"
            gzip "$PROCESSED/$FILENAME"
        done

這個腳本里 inotifywait 使用了 -m 選項,表示監測到指定事件時執行後續的命令。在這條命令裏, inotifywait 只監測 create 和 moved_to 事件。當這兩個事件發生時,文件名都會傳遞給 read 命令並賦值給 FILENAME 變量,而後再執行while循環下的代碼塊:首先將文件移動到剛剛建立的 processed 目錄,而後再進行 gzip 壓縮。

咱們爲該腳本賦予可執行權限,而後從主目錄運行這個腳本。

$ chmod u+x watch-incoming.sh
$ ./watch-incoming.sh

如今打開第二個終端窗口並在 incoming 目錄中建立一個新的文件。而後再列出 incoming 和 processed 目錄的內容,看看操做結束以後的結果。

腳本檢測到咱們在 incoming 目錄下有新文件建立,將其複製到 processed 目錄中,而後使用 gzip 進行壓縮。

這個功能實現後,咱們還能夠 DIY 更多好玩的功能。例如,咱們能夠爲圖像文件添加水印,將原始視頻壓縮爲mp4格式,批量修改文件名,等等。不怕不實現,就怕腦門不夠大!

-----------------

我是良許,世界500強外企 Linux 開發工程師,專業生產 Linux 乾貨。歡迎關注個人公衆號「良許Linux」,回覆「1024」獲取最新最全的技術資料,回覆「入羣」進入高手如雲技術交流羣。

img

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息