歡迎您光臨本站 註冊首頁

Linux-字元界面下,避免誤刪文件與建立資源回收機制

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

檔案反刪除,避免刪除檔案,在ext2檔案系統下搶救已刪除檔案

避免誤刪除檔案和建立資源回收桶機制

如今,幾乎所有系統【圖形界面】有內建資源回收機制,減少誤刪檔案時的遺憾。

不過,在字元下,目前各個版本為建立相關機制,所以使用rm指令刪除了重要檔案,多半是回天乏術,無法還原已刪除的檔案。因此隨後將介紹集中方法,那就自行建立類似資源回收站的機制。

使用回答的方式刪除檔案

避免誤刪檔案最簡單的方式,便是在刪除之前再三確認。若在rm指令后加上-i參數,則刪除檔案前,rm指令會詢問我們是否確定:

[root@localhost ~]# rm -i yum.gz
rm:是否刪除一般文件『yum.gz』? y

因此我們使用alias指令,如下建立一個名為rm的指令別名:

[root@localhost ~]# alias rm='rm -i'

【上述指令適合於zsh,bash等Bourne Shell家族,如果你的shell為tcsh或csh,則指令為alias rm 『rm ?i』。本章隨後內容中的指令和設定檔於tcsh或csh下亦多所不同】

如此使用rm刪除檔案時,便會自動加上-i參數,詢問是否確定:

[root@localhost ~]# touch iso1
[root@localhost ~]# touch iso2
[root@localhost ~]# rm iso*
rm: 無法刪除目錄『iso』: 是一個目錄
rm:是否刪除一般空文件『iso1』? y
rm:是否刪除一般空文件『iso2』? y

由於指令下定義的別名只是暫時性的,所以可以將上述alias指令加入家目錄下.bashrc檔案最後面,便可以在每次登入時自動設定這個別名。若是希望系統上所有使用者皆能使用此別名,則可以將其加入/etc/目錄下的profile檔案最後面。

【許多發行版預設已經在root帳戶的.bashrc檔內加入此別名,以免擁有最高權力root誤刪除重要的系統檔案】

建立資源回收機制---使用mv取代rm

治本的方法還是自行建立資源回收站,將要刪除的檔案先移到回收站,等到一定時間再行刪除,便能真正避免誤刪檔案的情況。

只要使用mv取代rm指令,便可以建立一個簡單的資源回收站,首先將建立一個指令稿取代原有的rm指令,請在/usr/local/bin目錄下,使用文件編輯器建立一個名為rm.junk的新檔:

#!/bin/sh

##設定資源回收站的目錄名稱

[root@localhost ~]# vi /usr/local/bin/rm.junk
#!/bin/sh

##設定資源回收站的目錄名稱

TRASH_DIR=".trash"
[ -d $TRASH_DIR ] || mkdir -p ~/$TRASH_DIR
mv $* ~/$TRASH_DIR/

完成後執行如下指令,為指令稿加上執行的許可權:

[root@localhost ~]# chmod +x /usr/local/bin/rm.junk
[root@localhost ~]# alias rm='/usr/local/bin/rm.junk'

【由於設置是暫時的,因此需將alias指令加入家目錄下的.bashrc檔案最後面,便可以每次登陸自行設定這個別名。若是希望系統所有使用者都能使用此別名,可以將其加入到/etc/目錄下的profile檔案最後面】

如此輸入rm刪除檔案時,便自行呼叫rm.juk指令稿.這個指令稿會在使用者的家目錄下,建立一個名為.trash的目錄,然後將所有刪除的檔案,搬移到該目錄下。

【如果想要真正刪除該檔案,可輸入/bin/rm,才能直接呼叫位於/bin目錄下的rm執行檔】

[root@localhost ~]# rm grub*
[root@localhost ~]# cd ~/.trash./
[root@localhost ~]# cd ~/.trash/
[root@localhost .trash]# ls
grub-0.95 grub-1.96 grub-1.96.tar.gz grub1.iso grub_for_dos-0.4.1
[root@localhost .trash]#

【我們藉由rm.juk指令稿,讓mv指令取代原本的rm指令,因為rm指令與rm指令的參數不盡相同,所以有常見的參數便無法使用,如,mv指令沒有-r參數,故執行rm ?r將發生錯誤】

不過所有刪除的檔案都轉移到回收站了,所以這些檔案上仍然存在系統上,為了避免其持續佔有寶貴資源空間,可以執行crontab ?e指令,加入下面內容:

0 2 * * * /bin/rm ?rf 『find ~/.trash/ -atime +1』

【意思是在價目錄的.trash目錄內搜尋超過一天以上沒有被存取過的檔案】

如此每天凌晨2點,系統便會在帳戶下的資源回收站內,搜尋超過一天以上沒被存取的資料,然後自動刪除。如果想要幫系統上所有使用者自動刪除資源回收站超過一天以上的檔案,則可使用root帳戶執行crontab ?e指令,加入:

0 2 * * */bin/rm ?rf 『find /home/*/.trash/ -atime +1』

[火星人 ] Linux-字元界面下,避免誤刪文件與建立資源回收機制已經有2933次圍觀

http://coctec.com/docs/linux/show-post-186155.html