安全删除和恢复文件的脚本

由于现在的linux文件系统大多是etx3的,一不小心删除后是无法恢复的(至少我不知道),而rm是个很危险的操作!鉴于此我写了这俩小脚本,希望GGJJ们指点!
1,用root修改rm的权限:
#chmod o-x /bin/rm
2,在用户主目录下创建个"垃圾箱"
$mkdir ~/.temp

删除文件脚本:


cat erase
#!/bin/ksh
(($#==0)) && { echo "No paraments!";exit 1; }
for i in $*
do
        mv -f $i ~/.temp/$(find $(pwd) -maxdepth 1 -name $i|tr "/" "=")
done

恢复文件脚本:

cat unerase
#!/bin/ksh
(($#==0))&&{ echo "No paraments!";exit 1; }
cd ~/.temp
list=$(for i in $*;do ls ~/.temp|grep "/<$i/>";done)
for j in $list
do
file=$(echo $j|tr "=" "/")
mv $j ${file%/*}/${file##*/}
done



 admirer 回复于:2003-12-22 14:57:08

:)。MM真行!

 bjgirl 回复于:2003-12-22 15:33:43

引用:原帖由 "admirer"]:)。MM真行!
 发表:


这不过是一个假rm,真mv的伎俩!,;)
BTW:那个垃圾箱里的文件可以用cron来定时清理!

 admirer 回复于:2003-12-22 16:16:21

嗯!最好不要用cron去清理,不然她还是不给后悔的机会的。:) 
麻烦MM再帮着给倒一下“垃圾”。这样就“全”了!

 網中人 回复于:2003-12-22 16:34:09

cron 再加上保留日期判斷(如 30 天),應是不錯的... 
要不然,用 logrotate 工具保留最多一定數量的備份也行.... 

如何?

 bjgirl 回复于:2003-12-22 17:00:00

引用:原帖由 "admirer" 发表:
嗯!最好不要用cron去清理,不然她还是不给后悔的机会的。:)
麻烦MM再帮着给倒一下“垃圾”。这样就“全”了!


倒"垃圾"的脚本应该也很EASY ;),实际上paly shell不过如此,要充分利用系统给我们的"积木",按照自己的设计去搭就OK啦, ;)

 朽木可雕 回复于:2003-12-22 21:23:54

引用:原帖由 "bjgirl"]
 发表:


我好崇拜你啊。你就是这个论坛里我的第二个偶像。

 admirer 回复于:2003-12-22 21:33:54

引用:原帖由 "朽木可雕" 发表:

我好崇拜你啊。你就是这个论坛里我的第二个偶像。


to “bjgirl” 
MM加油啊!已经有fans了!祝贺,恭喜!!

 panlm 回复于:2003-12-22 22:36:16

无聊, 何必搞得像windows一样??

 bjgirl 回复于:2003-12-22 23:14:12

引用:原帖由 "panlm"]无聊, 何必搞得像windows一样??
 发表:


饱受打击~~:( :em08: :em10: :em14:

 admirer 回复于:2003-12-22 23:32:23

引用:原帖由 "bjgirl"]饱受打击~~:( :em08: :em10: :em14:
 发表:


MM放宽心,随他去吧!  :em03:

 eagle_fan 回复于:2003-12-23 11:03:28

赫赫,不錯不錯 
sa無聊的時候寫腳本挺有意思的 
我連mount cdrom都寫了一個腳本,嘿嘿

 朽木可雕 回复于:2003-12-23 11:27:17

写的不错。bjgirl,你能帮我看一下我发的那个编译问题的帖子吗?谢谢

 有点惨 回复于:2004-06-29 17:59:21

查资料的时候搜了出来,顶一下,不错,很适合我这种人用,稍稍的花了些时间改了一下,修正一下带路径删除文件无法恢复的bug,并在unerase不代参数时恢复所有的文件 
erase 

#! /bin/bash
(($#==0)) && { echo "No paraments!";exit 1; }
for i in $*
do
        if test -e $i
        then
                cd $(dirname $i)
                mv -f $(basename $i) ~/.temp/$(find $(pwd) -maxdepth 1 -name $(basename $i) | tr "/" "=")
                cd -
        else
                echo "$i:No such file or directory!"
        fi
done


unerase 

#! /bin/bash

cd ~/.temp
list=$(for i in $*; do ls |grep "/<$i/>"; done)
(($#==0)) && { list=$(ls|grep ""); }
for j in $list
do
        file=$(echo $j | tr "=" "/")
        mv $j ${file%/*}/${file##*/}
done


其实另外有一种解决的方法是把alias rm到mv!

 yutian 回复于:2004-07-03 09:34:34

ding

 sqh 回复于:2004-07-14 16:44:11

引用:原帖由 "有点惨" 发表:

其实另外有一种解决的方法是把alias rm到mv!



alias 
我试验了,没有成功,我不能解决参数问题,比如, 

rm是把文件mv到/.temp 

alias rm='mv XX /.temp' 

那么XX应该是rm后面的文件参数们,可是新的rm要被alias解释,怎么写这个XX呢? 



谢谢先

 keenor 回复于:2007-09-10 13:25:52



[ 本帖最后由 keenor 于 2007-9-10 13:28 编辑 ]

 may240 回复于:2007-09-11 11:34:11

:em02:

 luo118 回复于:2007-09-27 10:07:05

学习:) :) :) :)

 bobkey 回复于:2007-09-27 11:23:03

以我的经验,能写程序的MM,通常长得很丑。

 dayan_he 回复于:2008-05-04 12:55:19

七窍玲珑心,哈哈

 jcool 回复于:2008-06-17 13:40:39

哈哈,过来考古 ...很有意思!

原文链接:http://bbs.chinaunix.net/viewthread.php?tid=228037
转载请注明作者名及原文出处

转载于:https://www.cnblogs.com/p2liu/archive/2010/12/23/6048808.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值