免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3877 | 回复: 12
打印 上一主题 下一主题

献丑:UNIX下文件的删除与回收 ――“ rm”烦恼的解决 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-09 20:19 |只看该作者 |倒序浏览
UNIX下文件的删除与回收 ――“ rm”烦恼的解决

与windows系统默认将文件移到垃圾回收箱不同,UNIX命令“rm”直接将文件彻底删除。我曾经数次误删文件,给自己找了不少麻烦。痛定思痛,我模仿windows实现了solaris上的垃圾回收:删除文件时,文件被移至垃圾箱,cron job定时删除垃圾箱中的过期文件。具体做法如下:
1.        创建一个文件夹作为垃圾箱;
2.        创建脚本《del》,该脚本将参数中的文件移至垃圾箱;
3.        创建脚本《cleanRecycleBin.sh》,该脚本用于定时删除垃圾箱中的文件;
4.        创建cron job与空闲时刻(如午夜)执行《cleanRecycleBin.sh》。

脚本分别为:
script del:

#!ksh
while [ "$#" -ne 0 ]
do
        ext=__$(date '+%m%d%H%M%S')
        echo "moving $1"
        mv $1 /path/of/recycle.bin/$(basename $1)$ext
        shift

done
echo "done"

script cleanRecycleBin.sh(两句话):
#!/usr/bin/ksh
find /the/absolute/path/of/recycle.bin -atime +30 -exec rm {} \;

crontab 例子
0 1 * * * /the/path/of /script/cleanRecycleBin.sh

[ 本帖最后由 jixunuli 于 2006-2-16 12:42 编辑 ]

评分

参与人数 1可用积分 +2 收起 理由
waker + 2

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2006-02-09 21:39 |只看该作者
收藏了!谢谢

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2006-02-10 02:41 |只看该作者
不错~~~

论坛徽章:
0
4 [报告]
发表于 2006-02-10 09:41 |只看该作者

论坛徽章:
0
5 [报告]
发表于 2006-02-10 11:06 |只看该作者
很好,谢谢

论坛徽章:
0
6 [报告]
发表于 2006-02-15 09:02 |只看该作者

两点修改,请看原帖

mv $1 ~lgfang/recycle.bin/$(basename $1)$ext

$1$ext --> $(basename $1)$ext

find /the/absolute/path/of/recycle.bin -atime +30 -exec rm {} \;

-atime 30 --> -atime +30

论坛徽章:
0
7 [报告]
发表于 2006-02-15 10:30 |只看该作者
mv $1 ~lgfang/recycle.bin/$(basename $1)$ext
shift


这两句没有看懂!

~lgfang???

shift???

论坛徽章:
0
8 [报告]
发表于 2006-02-16 10:10 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
9 [报告]
发表于 2006-02-16 12:40 |只看该作者

解释

mv $1 /path/of/recycle.bin/$(basename $1)$ext

$1 -->调用该脚本时,传进来的参数分别为 $1, $2, $3...
shift --> 将参数顺序左移一个, 调用一次shift, 原来的$2,$3...就变成了$1, $2,$3
basename $1 -->去除$1(本应用中应为文件路径)中的路径。

综合起来,while循环的意思是:
对于每个传进来的参数,将他们移动到recycle.bin中并改名,加上后缀。

论坛徽章:
0
10 [报告]
发表于 2006-10-14 22:01 |只看该作者

更正:rm --> rm -rf , -atime --> -mtime, -maxdepth 1

顺便说下,改ID了

UNIX下文件的删除与回收 ――“ rm”烦恼的解决


与windows系统默认将文件移到垃圾回收箱不同,UNIX命令“rm”直接将文件彻底删除。我曾经数次误删文件,给自己找了不少麻烦。痛定思痛,我模仿windows实现了solaris上的垃圾回收:删除文件时,文件被移至垃圾箱,cron job定时删除垃圾箱中的过期文件。具体做法如下:

1.创建一个文件夹作为垃圾箱;

2.创建脚本《del》,该脚本将参数中的文件移至垃圾箱;

3.创建脚本《cleanRecycleBin.sh》,该脚本用于定时删除垃圾箱中的文件;

4.创建cron job与空闲时刻(如午夜)执行《cleanRecycleBin.sh》。

脚本分别为:
script del:

  1. #!/usr/bin/ksh

  2. while [ "$#" -ne 0 ] ; do
  3.         ext=__$(date '+%m%d%H%M%S')__$$
  4.         echo "moving $1"
  5.         mv $1 /path/of/recycle.bin/$(basename $1)$ext
  6.         shift
  7. done
  8. echo "done"

  9. script cleanRecycleBin.sh(只有一句话):
  10. find /the/absolute/path/of/recycle.bin -maxdepth 1 -mtime +30 -exec rm -rf {} \;
复制代码

crontab 例子:

  1. 0 1 * * * /the/absolute/path/of/script/cleanRecycleBin.sh
复制代码

[ 本帖最后由 lgfang 于 2007-1-30 10:20 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP