• <noscript id="yywya"><kbd id="yywya"></kbd></noscript>
  • 發布時間:2020-09-28 23:45 原文鏈接: 誤執行rmrf之后,除了跑路還能怎么辦?(二)

    有戲,看到了成功的曙光。

    但是新的問題就來了,我下載過來的命令文件,是沒有執行權限的。

    而 chmod 命令是在 /bin 目錄的,它同樣也被刪除了,無法使用它來給予文件權限。

    還在,在網上搜到了一個偉大命令 perl,可以通過它來給予文件權限:

    perl -e "chmod 777, 'ls'"

    真是個神奇的命令。

    好了,這下賦值權限問題也解決了,成功在望了。

    wget 是無法直接把 /bin 目錄下載下來的,只能下載一個文件。

    但是小林我不可能一個一個去下載來進行恢復,這得要何年何月才能完成。。。

    小林就想到了一個方法:

    先通過 wget 的方式下載 tar 命令,并通過 perl 給予 tar 命令權限;

    接著把另一臺服務器把 /bin 目錄打包成壓縮文件,然后通過 wget 下載 bin 目錄的壓縮包文件;

    最后通過 tar 命令把 bin 壓縮包解壓出來。

    /bin 就這樣恢復回來啦,剩余的其他目錄 也是通過同樣的操作恢復了回來。

    小林的笑容漸漸恢復了回來,哈哈哈哈哈哈哈哈哈哈哈哈~

    遇到 rm -fr  刪庫事件發生,一定要沉住氣,穩住心態!

    本次刪庫事件,之所以小林能幸運的恢復回來,有非常關鍵兩點:

    小林發現腳本執行不正常,果斷立馬的掐斷它,沒有造成重要的數據庫信息被刪除,如果掐斷的時候再晚一點,可能就真沒了;

    小林發現常用命令無法使用的時候,沒有重啟服務器,不然服務器就起不來了,也沒有關閉 ssh 會話,不然無法在重新連接 ssh 會話了,也就無法進行操作了。

    如果以上兩點都沒做好,服務器恢復的難度就加大了很多,更嚴重的是假期就沒法過了。

    預防誤執行 rm -fr

    既然 rm -fr  是殘忍的兇器,那么預防它是很有必要的,接下來跟大家討論討論預防它的幾種方案。

    1、rm -rf 刪除目錄時要判斷目錄

    #!/bin/bash

    work_path=`pwd`

    #如果目錄不為空,才執行刪除操作

    if [ ${work_path} != "" ];then

       rm -fr ${work_path}

    fi

    在執行刪除目錄操作前,先判斷要刪除的目錄是否為空,不為空才執行刪除操作。

    2、Shell 腳本指定 set -u

    執行腳本的時候,如果遇到不存在的變量,Bash 默認忽略它。

    #!/bin/bash

    echo $a

    echo hello

    上面代碼中,$a 是一個不存在的變量,執行結果如下。

    $ bash test.sh

    hello

    可以發現,echo $a 輸出了一個空行,Bash 忽略了不存在的 $a,然后繼續執行 echo hello。

    最好是遇到變量不存在,腳本應該報錯,而不是一聲不響地往下執行。

    set -u 就用來改變這種行為,在腳本加上它,遇到不存在的變量就會報錯,并停止執行。


  • <noscript id="yywya"><kbd id="yywya"></kbd></noscript>
  • 东京热 下载