防止rm誤操作的方法

--preserve-root 選項

像freebsd, GNU/Linux 這樣的系統(tǒng)都有文件系統(tǒng)根目錄保護機制酝碳,如果沒有指定--no-preserve-root參數(shù)营勤,GNU rm 將拒絕執(zhí)行

rm -rf /

這樣致命的指令(嗯,其實我沒有驗證過其效果啦)淹父,但只應(yīng)用于文件名嚴格為 '/' 的情形世蔗,不能阻止

rm -rf /*

避免使用 ./ 前綴

要刪除一個目錄下的所有內(nèi)容,不要使用

rm -rf ./*

,更進一步地颜矿,不要使用 ./* 來引用當前目錄下的所有文件,直接使用 * 即可嫉晶,這樣可以避免寫成 /* 或者 / * 這樣的悲劇發(fā)生骑疆。

chattr 設(shè)置擴展屬性

在需要保護的目錄下創(chuàng)建一個文件名比較靠前的文件 0,設(shè)置其不可刪除

touch /0
chattr +i /0

這種做法對 -f 選項的rm 命令行無效替废,其它文件仍然會被刪除箍铭。

使用 -i 文件賦予命令行中 rm -i 選項

在重要目錄下創(chuàng)建 -i 文件

touch -- /-i /usr/-i /bin/-i /sbin/-i /etc/-i /lib/-i /lib64/-i \
/boot/-i /dev/-i /var/-i

-i 文件并不能阻止

rm -rf /etc/*
rm -rf ./*

這樣的事情發(fā)生,因為此時 -i 文件的路徑是 /-i, ./-i, 不會被解釋成 rm 的選項椎镣。 所以前面講的避免使用 ./ 前綴對于 -i 文件起到作用很重要诈火。

alias rm='rm -I' 并避免使用 -f 選項

因為缺省的 alias 是 rm='rm -i', 所以為了避免刪除每個文件都要確認,得使用 -f 選項(如果沒有 alias rm='rm -i', 刪除多個文件状答、遞歸刪除都不需要使用 -f 選項)冷守。

rm 的 -I 選項的作用是

prompt once before removing more than three files, or when removing recursively. Less intrusive than -i, while still giving protection against most mistakes

此方法不能避免一次誤刪除數(shù)量少于或等于3個的文件。
此方法可以和上面的創(chuàng)建不能具有 i 擴展屬性的文件結(jié)合使用惊科。

將 -r -f 選項放在命令行的最后面

這樣可以避免路徑尚未敲完整時誤按 enter 鍵造成的錯誤操作拍摇。
此方法在使用 GNU coreutils 的系統(tǒng)上可用,在某些unix系統(tǒng)上可能不支持將選項放到命令行的最后馆截。充活。

使用 safe-rm 替代 rm

Safe-rm is a safety tool intended to prevent the accidental deletion of important files by replacing /bin/rm with a wrapper, which checks the given arguments against a configurable blacklist of files and directories that should never be removed.

Users who attempt to delete one of these protected files or directories will not be able to do so and will be shown a warning message instead:

$ rm -rf /usr
Skipping /usr

(Protected paths can be set both at the site and user levels.)

可以將 safe-rm 更名為 rm 并放在 $PATH 中比 原rm 程序靠前的位置。一些腳本中使用完全路徑/bin/rm則不會受此影響蜡娶。雖然將 safe-rm 重命名成 rm 有其好處混卵,但平時應(yīng)該養(yǎng)成盡量避免在命令行中使用 rm 的習(xí)慣,在命令行中 safe-rm 的名稱來執(zhí)行安全刪除操作窖张,以避免因為依賴偽裝成 rm 的safe-rm 導(dǎo)致在沒有 safe-rm 的機器上犯錯幕随。

The system-wide blacklist lives in /etc/safe-rm.conf and you should probably add paths like these:

/
/etc
/usr
/usr/lib
/var

The user-specific blacklist lives in ~/.safe-rm and could include things like:

/home/username/documents
/home/username/documents/*
/home/username/.mozilla

建立回收站機制

回收站機制則是另一種思路,它并不真正執(zhí)行刪除操作荤堪,而是將文件移動到一個特定目錄合陵,可以設(shè)置定時清楚回收站,或者在回收站里面的文件大小達到一定容量時執(zhí)行刪除操作(可以選擇清空澄阳,更保守的做法時設(shè)置soft/hard閾值之類的)以騰出空間拥知。

可以寫個shell腳本替換rm命令,或者在需要刪除文件的時候使用mv命令將文件移動到回收站碎赢。

只讀掛載

boot文件系統(tǒng)可以設(shè)置 noauto,ro 的掛載選項低剔。

防止空變量導(dǎo)致的誤刪除

在腳本中不要使用

rm -rf $FOO/

執(zhí)行這樣的操作前最好檢查變量是否非空,而且不要帶后面的/

[[ -n $F00 ]] && rm -rf $FOO

做好備份

這個是王道襟齿,不僅可以防止誤刪姻锁,還可以防止其它如硬盤損壞等原因?qū)е碌臄?shù)據(jù)丟失。

可以采用dump的增量備份機制猜欺,LVM快照位隶,在虛擬化環(huán)境中的快照功能等等。

其它

良好的工作習(xí)慣是非常重要的开皿,不要過于依賴工具涧黄,比如不要因為像 safe-rm 這樣的保護機制而放松警惕,否則當你在一臺沒有那種保護機制的機器上操作時赋荆,會因為過于輕率地使用rm命令導(dǎo)致悲劇笋妥。另外一點就是不要使用root作為日常工作賬號。

我一直以為 rm -rf dir/rm -rf dir 是不同的窄潭,以為前者等價于 rm -rf dir/*, 因為在 rsync 中 dir/ 隱含 dir/*春宣。但是今天發(fā)現(xiàn)rm -rf dir/ 是會刪除 dir 這個目錄的。所以在刪除一個目錄時嫉你,完全沒必要使用 dir/ 這樣的形式月帝,這樣少敲一個鍵且可以避免誤刪的風險。

參考:
通過替換linux rm命令防止誤刪除
How do I prevent accidental rm -rf /*?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末均抽,一起剝皮案震驚了整個濱河市嫁赏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌油挥,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件款熬,死亡現(xiàn)場離奇詭異深寥,居然都是意外死亡,警方通過查閱死者的電腦和手機贤牛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門惋鹅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人殉簸,你說我怎么就攤上這事闰集。” “怎么了般卑?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵武鲁,是天一觀的道長。 經(jīng)常有香客問我蝠检,道長沐鼠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮饲梭,結(jié)果婚禮上乘盖,老公的妹妹穿的比我還像新娘。我一直安慰自己憔涉,他們只是感情好订框,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著兜叨,像睡著了一般穿扳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浪腐,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天纵揍,我揣著相機與錄音,去河邊找鬼议街。 笑死泽谨,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的特漩。 我是一名探鬼主播吧雹,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼涂身!你這毒婦竟也來了雄卷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蛤售,失蹤者是張志新(化名)和其女友劉穎丁鹉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悴能,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡揣钦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了漠酿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冯凹。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖炒嘲,靈堂內(nèi)的尸體忽然破棺而出宇姚,到底是詐尸還是另有隱情,我是刑警寧澤夫凸,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布浑劳,位于F島的核電站,受9級特大地震影響寸痢,放射性物質(zhì)發(fā)生泄漏呀洲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望道逗。 院中可真熱鬧兵罢,春花似錦、人聲如沸滓窍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吏夯。三九已至此蜈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間噪生,已是汗流浹背裆赵。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留跺嗽,地道東北人战授。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像桨嫁,于是被迫代替她去往敵國和親植兰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容