zoukankan      html  css  js  c++  java
  • 安全删除和恢复文件的脚本

    由于现在的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
    转载请注明作者名及原文出处

  • 相关阅读:
    工作中常用的工具
    lua 调试、热重载
    Lua库收集
    Mac常见端口
    Swift 学习笔记1
    项目-微博(模仿新浪微博)
    iOS多线程
    iOSCoreData介绍
    iOS数据库操作流程
    iOS中数据库运用之前的准备-简单的数据库
  • 原文地址:https://www.cnblogs.com/p2liu/p/6048808.html
Copyright © 2011-2022 走看看