在LINUX上实现 windows 回收站功能的脚本
由于公司里的备份软件是每天晚上执行一次,如果员工当天不小心删除了文件,那只能回复到昨天的状态,如果是员工今天花了一天才写完的CODE,那就没法恢复 了,这样就员工一天的工作就白干了,当然你可能会说,这个员工活该,谁让他不小心了,但是当事情发生了之后,人家就会来找你解决了,虽然 你平常躲在角落里听歌、看电影网上看美女没人管,但是当真正有了问题后人家第一个想到的还是你, 这个时候你总不能跟人家你不会吧,这可是体现你技术水平的时候,呵呵,你是这些stupid 的技术人员的最后救命稻草呀……,那就把文件给他恢复回来,把下面的脚本安装到你的 Linux系统上就好了,呵呵,Solaris 和AIX还有其它UNIX不知道好不好使,反正只要rm 命令用法是一样的,那就没问题!
########################################################################################
作者:李杰
发布时间: 2010-05-07
版本:1.0
脚本功能:
1. 在用户执行rm命令时,将文件移动/dump-file/ ,被 移动到dump-file 目录下的文件、文件夹以原文件名+删除除的日期格式存放,如 weather.txt 在删除后就会被自动移动到/dump-file/ 下并命名为weather.txt_2010-05-07_14:46:51.bak
2. 此命令在执行时会检测文件或目录的大小,如果文件或目录超过2GB,将不会再将文件移动到回收站,而会直接删除,此功能是为了避免回收站过大而对系统造成影响
安装需求:
1.创建删除文件存放目录mkdir /dump-file/ && chmod -R 777 /dump-file
2.创建日志输出文件 touch /tmp/rm.dump && chmod -R 777 /tmp/rm.dump
3.将系统rm命令移动成 rm.bak : mv /bin/rm /bin/rm.bak
4.将此脚本命名为/bin/rm 并给予可执行权限 :chmod 644 /bin/rm
#!/bin/bash
DumpFile=/dump-file/
File=`echo $line|awk '{print $2}'`
aa=$(echo $1|grep "^-")
###
function TestDir(){
Test_Dir=$(echo $line|grep "/") #test if is a directory.
Test_Dir2=$(echo $line |awk '{print $2}'|grep "^/") # Test if the prameter starts with "/".
Dir2=$(echo $line |awk -F/ '{print $2}') #Extract the prameter after the first "/".
Dir=$(echo $line |awk '{print $2}'|awk -F/ '{print $1}') ##Extract the prameter before the first "/".
D1=`date +%F_%H:%M:%S.bak`
Date=`echo $line
相关文档:
linux中线程相关函数
2010年03月09日 星期二 22:18
1. 比较两个线程 ID 是否一致。
线程ID 使用 pthread_t 数据类型来表示。Linux 使用 unsigned long int 表示pthread_t 数据类型。Solaris 9 把 pthread_t 数据类型表示为 unsigned int。FreeBSD5.2.1 和 MAC OS X 10.3 用一个指向 pthread ......
2009 年 4 月 23 日
本文中我们针对 Linux 上多线程编程的主要特性总结出 5 条经验,用以改善 Linux 多线程编程的习惯和避免其中的开发陷阱。在本文中,我们穿插一些 Windows 的编程用例用以对比 Linux 特性,以加深读者印象。
背景
Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微 ......
linux c 读取文件行数参照wc 系统命令编写的函数如下:
#include <fcntl.h>
#include <stdlib.h>
#define MAXBSIZE 65536
u_long file_wc(char *file)
{
register u_char *p;
register short gotsp;
register int ch, len;
register u_long linect, charct;
int fd;
u_char buf[MAXBSIZE];
......
无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以简洁明快地理顺各个源文件之 ......
随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起。这里介绍学习Linux的一些建议。
一、从基础开始
常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基础的。例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何 限制使用者 ......