现在的位置: 首页shell>正文
rss
centos下shell脚本实现windows的回收站功能
2011年05月17日 shell 评论数 7 ⁄ 被围观 18,353 次+

脚本功能:
1、在用户执行rm命令时,将文件移动/dump-file/ ,被移动到dump-file 目录下的文件、文件夹以原文件名+删除除的日期格式存放,如 rm.sh 在删除后就会被自动移动到/dump-file/ 下并命名为rm.sh_2011-05-17_11:18:21.bak
2、此命令在执行时会检测文件或目录的大小,如果文件或目录超过2gb,将不会再将文件移动到回收站,而会直接删除,此功能是为了避免回收站过大而对系统造成影响

安装方法:

  1. cp-rp/bin/rm/bin/rm.bak
  2. //将系统原有rm命令改成rm.bak,记住一定要改成rm.bak,因为回收站脚本需要调用rm.bak这个命令。
  3. cp-rprm.sh/bin/rm
  4. //将你的脚本文件rm.sh覆盖成/bin/rm文件
  5. chmod+x/bin/rm
  6. //赋予/bin/rm可执行权限
  7. echo"08**6/bin/sh/fmnp/soft/clean-dump.sh">>/var/spool/cron/tabs/root
  8. //为了防止/dump-file目录过大,采取每周进行一次删除操作,脚本如下:
  9. #!/bin/bash
  10. /bin/rm.bak-rf/dump-file/*
  11. /bin/rm.bak-rf/tmp/*.rm-dump

保存退出

  1. mkdir/dump-file&&chmod-r777/dump-file
  2. //创建/dump-file目录并给予所有用户可写的权限。

脚本如下:

  1. #!/bin/bash
  2. dumpfile=/dump-file/
  3. file=`echo$line|awk'{print$2}'`
  4. aa=$(echo$1|grep"^-")
  5. dumplog="`whoami`-`date+%m-%d-%h-%m`.rm-dump"
  6. functiontestdir()
  7. {
  8. test_dir=$(echo$line|grep"/")#testifisadirectory.
  9. test_dir2=$(echo$line|awk'{print$2}'|grep"^/")#testiftheprameterstartswith"/".
  10. test_dir3=$(echo$line|awk'{print$2}'|grep"^/tmp")#
  11. dir2=$(echo$line|awk-f/'{print$2}')#extracttheprameterafterthefirst"/".
  12. dir=$(echo$line|awk'{print$2}'|awk-f/'{print$1}')##extracttheprameterbeforethefirst"/".
  13. d1=`date+%f_%h:%m:%s.bak`
  14. date=`echo$line|awk'{print$2"_"d1}'d1=$d1`
  15. dumplog="`whoami`-`date+%m-%d-%h-%m`.rm-dump"
  16. if[[$test_dir!=""]];then#ifparametersincludedirectory
  17. if[[$test_dir2!=""]];then#ifparameterstartswith"/",asformate/a/b/c/
  18. if[[$test_dir3!=""]];then#thistestisfortorepairelesscommand'serror.
  19. rm.bak-rf`echo$line|awk'{print$2}'`
  20. else
  21. #echo$line"startwith/"
  22. mkdir$dumpfile$dir2"_"$d12>/tmp/$dumplog#createdirectoryasformat/dump-file/(firstdirectoryafter"/")
  23. mv`echo$line|awk'{print$2}'`$dumpfile$dir2"_"$d1
  24. echo$dumpfile$dir2"_"$d1
  25. fi
  26. else#meansthatparameterstartswithout"/",asformata/b/c
  27. mkdir$dumpfile$dir$d1#createdirectoryasformat/dump-file/(firstdirectorybefore"/")
  28. mv`echo$line|awk'{print$2}'`$dumpfile$dir$d1
  29. echo$line"startsbefore/"
  30. fi
  31. else
  32. date=`echo$line|awk'{print$2"_"d1}'d1=$d1`
  33. mv`echo$line|awk'{print$2}'`$dumpfile$date
  34. fi
  35. }
  36. if[["$1"!=""]];then#ifthefristparameterisnotempty.
  37. if[[$aa!="$1"]];then#ifthefirstparameternotstartwith"-".
  38. du-s"$@"2>/tmp/$dumplog|whilereadline
  39. do
  40. size=`echo$line|awk'$1>2000000{print$1}'`
  41. if["$size">"1900000"];then
  42. #echo"lagerthan2mb"
  43. rm.bak-rf`echo$line|awk'{print$2}'`
  44. else
  45. testdir
  46. fi
  47. done
  48. else
  49. if[["$2"!=""]];then
  50. until["$2"==""]
  51. do
  52. #echo"functionisrunning"
  53. du-s$22>/tmp/$dumplog|whilereadline
  54. do
  55. size=`echo$line|awk'$1>2000000{print$1}'`
  56. if["$size">"1900000"];then
  57. #echo"lagerthan2mb"
  58. rm.bak-rf$2
  59. else
  60. testdir
  61. fi
  62. shift
  63. done
  64. shift
  65. done
  66. else
  67. echo-e"nofiledetected./ntry'rm--help'formoreinformation."
  68. fi
  69. fi
  70. else
  71. echo-e"rm:missingoperand/ntry'rm--help'formoreinformation."
  72. fi

rm

本文地址:/39/673.html
如非注明则为本站原创文章,欢迎转载。转载请注明转载自:moon's blog
 

目前有 7 条留言 其中:访客:5 条, 博主:2 条

  1. 无心无情 : 2011年05月17日17:11:49  1楼

    博主你好,我是www.54zone.org的博主,我的域名被盗了,现在使用的是www.hyxl.org这个域名,麻烦改一下,谢谢~!

    • clairelume : 2011年05月17日17:33:36

      好的!

  2. bob : 2011年09月09日18:14:13  2楼

    加一个,供参考:
    http://bbs.chinaunix.net/viewthread.php?tid=3592317&from=favorites

    • clairelume : 2011年09月09日18:41:48

      呵呵,学习了,有空参考一下!~ :razz:

  3. 肠粉的做法 : 2012年06月15日16:12:24  3楼

    :smile: 实现这个回收站功能 真的很使用

  4. 锻铜雕塑 : 2012年09月12日15:37:15  4楼

    学习了 技术贴啊 前段时间正好想到过这个问题 茅塞顿开 谢谢分享

  5. 明夜心 : 2015年05月07日17:04:26  5楼

    不错,用到了