linux (rm指令) 及误删除解决
今天在群里看見這一幕:
看到這兒,我們學(xué)習(xí)一下 這個(gè)RM指令
rm命令可以刪除一個(gè)目錄中的一個(gè)或多個(gè)文件或目錄,也可以將某個(gè)目錄及其下屬的所有文件及其子目錄均刪除掉。對(duì)于鏈接文件,只是刪除整個(gè)鏈接文件,而原有文件保持不變。
注意:使用rm命令要格外小心。因?yàn)橐坏﹦h除了一個(gè)文件,就無法再恢復(fù)它。所以,在刪除文件之前,最好再看一下文件的內(nèi)容,確定是否真要?jiǎng)h除。rm命令可以用-i選項(xiàng),這個(gè)選項(xiàng)在使用文件擴(kuò)展名字符刪除多個(gè)文件時(shí)特別有用。使用這個(gè)選項(xiàng),系統(tǒng)會(huì)要求你逐一確定是否要?jiǎng)h除。這時(shí),必須輸入y并按Enter鍵,才能刪除文件。如果僅按Enter鍵或其他字符,文件不會(huì)被刪除。
語法:
rm (選項(xiàng))(參數(shù))
選項(xiàng)
-d:直接把欲刪除的目錄的硬連接數(shù)據(jù)刪除成0,刪除該目錄; -f:強(qiáng)制刪除文件或目錄; -i:刪除已有文件或目錄之前先詢問用戶; -r或-R:遞歸處理,將指定目錄下的所有文件與子目錄一并處理; --preserve-root:不對(duì)根目錄進(jìn)行遞歸操作; -v:顯示指令的詳細(xì)執(zhí)行過程。
參數(shù)
文件:指定被刪除的文件列表,如果參數(shù)中含有目錄,則必須加上-r或者-R選項(xiàng)。
實(shí)例
交互式刪除當(dāng)前目錄下的文件test和example
rm -i test example Remove test ?n(不刪除文件test) Remove example ?y(刪除文件example)
刪除當(dāng)前目錄下除隱含文件外的所有文件和子目錄
# rm -r *
即:rm -rf /* (是強(qiáng)制刪除根目錄及全部的子文件)
解決辦法(解決誤刪除的辦法集合):
為了避免誤刪根目錄,或者重要的文件,整理了以下方法:
1、safe-rm
safe-rm 是一個(gè)開源軟件用來替代不太安全的rm,可以在/etc/safe-rm.conf中配置路徑黑名單,定義哪些不能被safe-rm刪除。
可以將 safe-rm 更名為 rm 并放在 $PATH 中比 原rm 程序靠前的位置。一些腳本中使用完全路徑/bin/rm則不會(huì)受此影響。
$ rm -rf /etc/ safe-rm: skipping /etc/
官方地址:http://freecode.com/projects/safe-rm,ubuntu可以直接apt-get安裝,centos要下載源碼安裝。
2、建立回收站機(jī)制
它并不真正執(zhí)行刪除操作,而是將文件移動(dòng)到一個(gè)特定目錄,可以設(shè)置定時(shí)清楚回收站,或者在回收站里面的文件大小達(dá)到一定容量時(shí)(或者用時(shí)間做判斷)執(zhí)行刪除操作以騰出空間。
可以寫個(gè)shell腳本替換rm命令,或者在需要?jiǎng)h除文件的時(shí)候使用mv命令將文件移動(dòng)到回收站。
1) 在/home/username/ 目錄下新建一個(gè)目錄,命名為:.trash
2)在/home/username/tools/目錄下,新建一個(gè)shell文件,命名為: remove.sh
TRASH_DIR="/home/username/.trash"
for i in $*; do
STAMP=`date +%s`
fileName=`basename $i`
mv $i $TRASH_DIR/$fileName.$STAMP
done
3)修改~/.bashrc, 增加一行
alias rm="sh /home/username/tools/remove.sh"
用我們自建的remove.sh替代rm命令
4)設(shè)置crontab,定期清空垃圾箱,如:
0 0 * * * rm -rf /home/username/.trash/*
每天0點(diǎn)清空垃圾箱
5)source ~/.bashrc 使替換立即生效
3、注意腳本中rm -rf 變量的使用
在腳本盡量不要使用 rm -rf $FOO/, 請(qǐng)使用 rm -rf $FOO;另外刪除盡量不要寫相對(duì)路徑,不要帶變量。
4、根文件系統(tǒng)設(shè)置只讀掛載
noauto,ro
5、各種備份
可以異地遠(yuǎn)程備份重要的數(shù)據(jù),采用dump的增量備份機(jī)制,LVM快照,虛擬化環(huán)境中的快照、raid5等等。
附錄:How do I prevent accidental rm -rf /*?
關(guān)注博客,每天進(jìn)步一小點(diǎn)! 嘿嘿~~~
總結(jié)
以上是生活随笔為你收集整理的linux (rm指令) 及误删除解决的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: koalas-rpc
- 下一篇: 【WP8】LoopingSelector