BBS水木清华站∶精华区
发信人: freedom@csie.nctu.edu.tw (Tan Koan-Sin), 信区: Unix
标 题: Re: 如何救回不小心砍掉的档案??
发信站: Republic of Confusion (Mon Dec 11 07:06:38 1995)
转信站: SMTH!aidebbs!news.csie.nctu!freedom
Origin: freedom@dragon.csie.nctu.edu.tw
最混的研究生 (bush.bbs@bbs.cs.nccu.edu.tw) wrote:
∶ 就像 dos 下面的 undelete , 可以救回来,在 unix 下面不小心
∶ 用 rm 砍掉档案,怎们救回来呢?? 谢谢
from UNIX FAQ:
3.6) 我要如何 "undelete" 一个档案?
某年某月的某一天,要删除 "*.foo" 却一不小心打成了 "rm * .foo",
结果发现竟把 "*" 都删除了。真的是欲哭无泪啊!可是你也只好把这当成
是成长的代价了。
当然一个称职的系统管理员应当会定期做备份。先问一问你的系统管理员看
你不小心删除的档案是不是有备份起来。如果没有的话,嗯,继续往下看吧!
不管你是不是真的要删除一个档案,当你下了 "rm" 以後,档案就不见了。
在你 "rm" 一个档案,系统就不再记得你的档案是用了硬碟中的哪些 block
了。更糟糕的是,当系统要用到更多的硬碟空间时,就优先取用这些刚放出
来的 block。不过天底下没有不可能的事。理论上说,若你在下了 "rm" 後,
马上把系统 shutdown,资料是就得回来的。不过,你得找一个对系统非常
熟悉且肯花费数小时至数天的时间来帮你做这件事的专家才行。
当你不小心 "rm" 了一个档案後,第一个反应或许是为什麽不用一个 alias
或在 sh 中的 function 将 "rm" 取代掉,当你下 "rm" 只把档案搬到一个
垃圾桶之类的地方呢?那如果不小心杀错档案就可以挽救,只是要定期清一
清垃圾桶就好了。有两个理由。第一,大多数的人不认为这是一个好的做法。
这麽做的话你会太依赖你的 "rm",有一天到了一个正常的系统中把正常的
"rm" 当成你的 "rm" 来用,那可能会死得很惨。第二,你会发现你花费了
许多不必要的时间在处理垃圾桶里的东西。所以对一个初学者而言呢,用
"rm" 的 -i选项应该就够了。
如果你有大无畏的精神的话,那好吧,就给你个简单的答案。写一个名为
"can" 的指令,功用是将档案移到垃圾桶里。在 csh(1) 中,将以下的东西
放进 ".login" 里:
alias can 'mv \!* ~/.trashcan' # junk file(s) to trashcan
alias mtcan 'rm -f ~/.trashcan/*' # irretrievably empty trash
if ( ! -d ~/.trashcan ) mkdir ~/.trashcan # ensure trashcan exists
如果你想要每次 logout 时都把垃圾桶清乾净,那就把
rm -f ~/.trashcan/*
进 ".logout" 里。若你用的是 sh 或是 ksh,那自己试试著写写看吧!
MIT 的雅典娜计画(Project Athena)作出了一套有
delete/undelete/expunge/purge 的软体。这套软体可以完全取代 "rm" 而又提
供 undelete 的功能。这个软体曾 post 在 comp.sources.misc(volume 17,
issue 023-025)。
PS.
关於 FAQ 中文版:
鉴於 tw.bbs.comp.unix 中一再出现重覆的问题
我们({chenjl,freedom,jjyang}@csie.nctu.edu.tw)将 comp.unix.questions 的 FAQs
翻译为中文
希望对这种情况的改善能有所助益
此 faq 中文版置於 ftp://ftp.csie.nctu.edu.tw/pub/CSIE/contrib/cfaq/unix 下
亦可由
gopher://gopher.csie.nctu.edu.tw:70/11/NCTU/CSIE/center/ccfaq/unix-faq
观之
--
希望 终有一年春天 我们的子孙会读到
头条新闻如下
冬侯鸟小水鸭要北返了 经过淡水河边的车辆
禁鸣喇叭 ---- 刘克襄
BBS水木清华站∶精华区