Linux Shell指令碼生產環境下安全地刪除檔案

2021-09-21 22:39:27 字數 1598 閱讀 6522

指令碼編寫背景

無論是生產環境、測試環境還是開發環境,經常需要使用rm命令刪除&批量一些「重要」目錄下的檔案。按照linux的哲學「小即是美」(乙個程式只做一件事)+「使用者清楚自己做什麼」(使用者知道自己想要什麼,也明白自己在做什麼,並且會為自己的行為負責),那麼使用者在執行rm時,一定要知道自己的操作可能引起的後果,因此「三思而後行」真的很重要。但這對於一部分人來講,真的可能是災難性的,手抖、手賤和任何錯誤的操作(在路徑分隔符"/"前多打了空格,錯誤使用*,錯誤的路徑(當前路徑、相對路徑、錯誤的操作路徑)、錯誤指令碼(竟然有人敢在生產環境除錯未經過測試的指令碼)、錯誤的批量操作、錯誤的安全策略)都可能引起資料的丟失,這在生產環境,特別是缺少備份缺少熱備的生產環境中是非常致命非常可怕的。

因此通過指令碼或者其他方式來讓使用者後悔一次是非常有必要的。

本文用bash shell script的方式實現這一問題,其他解決方案可以參見文末的「參考」。

指令碼編寫思路

跟**站的思路比較相似,**站有這樣的特性:1.並非真的刪除;2.同名的可以;3.記住檔案的源路徑,作為指令碼也應該做到如此

指令碼使用起來應該跟rm使用起來基本類似

指令碼使用截圖

關於rm的引數問題

指令碼內使用忽略的策略,無論使用rm的哪種引數,都將進行mv操作,此處宜當改進。

指令碼內容

指令碼內容可以參見

github.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

bat指令碼生產案例解析

echo off 關閉顯示 set filename d 運維平台 運維log log date 0,4 date 5,2 date 8,2 txt cls 清除螢幕 setlocal enabledelayedexpansion set basecfgfile cfg config.ini 設定引...

Linux,shell指令碼 生成自簽名私鑰和證書

bin bash 蘇蘇 su peng da read p 請輸入存放證書的目錄 dir if d dir then echo 該目錄不存在 exit firead p 請輸入金鑰名稱 name 使用 openssl 生成私鑰 openssl genrsa out dir dir key 使用 op...

Linux Shell指令碼基礎

shell指令碼在處理自動迴圈或大的任務方面可節省大量時間,且功能強大。任何指令碼都可能有注釋,加注釋需要此行的第乙個字元為 直譯器對此行不予解釋。指令碼不是複雜的程式,它是按行解釋的。指令碼第一行總是以 bin sh開始,這段指令碼通知shell使用系統上的 bourne shell直譯器。指令碼...