[置顶] Linux回收站建立
2015-03-20 10:25
169 查看
误删除是很多运维人员比较恐怖的字眼,如果事前做好准备工作防患未然就会避免此类事情发生。
虽然目前有很多恢复数据的软件,但大多数都操作繁琐,恢复效果并不理想,比如说利用lsof这种形式恢复很难把数据完全恢复回来,testdisk工具也可以恢复删除的数据,但恢复的数据都被重命名了,很难找到删除的文件,而且这种恢复方式耗时长风险大,可以把这种方法当作没有办法的办法。ext3grep也可以恢复删除的数据,但我安装了好几个小时都没安装成功,请恕本人太笨。为了满足Linux操作系统没有回收站的功能,就此运用Linux自带的bashshell
在服务器上建立回收站。
优点:1,风险低,删除的文件会被原封不动的恢复过来。
2,速度快,只要进入到回收站mv回来就OK。
难点:1,回收站空间的限制,不能让回收站占满磁盘空间,需要分配指定大小的空间。
2,回收站的管理,不能让回收站空间满,要有自动管理回收站里面数据大小的限制。
3,不同删除方式的处理。
4,删除的速度不能太慢。
主体思想:利用mv命令把要删除的数据放到指定目录下。
开始:
1,创建一个固定大小的分区,挂载到相应目录下,目的是给回收站限额,这里我们用losetup把loop设备映射到一个模拟的分区上。
注意:这里面用dd创建的文件是50G,可以根据自己的需求定制。
2,创建删除脚本,该脚本包含了删除数据的一系列命令,超过10G的数据直接删除,大家可以根据数据量的大小来自我定制。
cat ~/trash/bin/rm.sh
3,我们要创建自我回收脚本,不能让回收站持续的增长上去,撑满回收站分区的时候会导致删除数据过慢。
cat ~/trash/bin/clean.sh
crontab -l
10 01 * * * bash /home/map/trash/bin/clean.sh
4,这时候rm -rf 或者rm -r的时候还是调用系统自带的rm命令,我们可以用alias把rm命令链接到rm.sh脚本上
vi .bashrc
alias rm="/home/map/trash/bin/rm.sh"
在.bashrc里面加alias是某一个用户的设置,如果所有用户都用该脚本的话可以
vi /etc/profile 在底部加上alias rm="/home/map/trash/bin/rm.sh"就行了
如果想在所有用户都用这个回收站功能就要注意以下回收站的权限设置。
删除的数据会被放到~/trash/data/下,可以去查找到被删除的数据。
虽然目前有很多恢复数据的软件,但大多数都操作繁琐,恢复效果并不理想,比如说利用lsof这种形式恢复很难把数据完全恢复回来,testdisk工具也可以恢复删除的数据,但恢复的数据都被重命名了,很难找到删除的文件,而且这种恢复方式耗时长风险大,可以把这种方法当作没有办法的办法。ext3grep也可以恢复删除的数据,但我安装了好几个小时都没安装成功,请恕本人太笨。为了满足Linux操作系统没有回收站的功能,就此运用Linux自带的bashshell
在服务器上建立回收站。
优点:1,风险低,删除的文件会被原封不动的恢复过来。
2,速度快,只要进入到回收站mv回来就OK。
难点:1,回收站空间的限制,不能让回收站占满磁盘空间,需要分配指定大小的空间。
2,回收站的管理,不能让回收站空间满,要有自动管理回收站里面数据大小的限制。
3,不同删除方式的处理。
4,删除的速度不能太慢。
主体思想:利用mv命令把要删除的数据放到指定目录下。
开始:
1,创建一个固定大小的分区,挂载到相应目录下,目的是给回收站限额,这里我们用losetup把loop设备映射到一个模拟的分区上。
注意:这里面用dd创建的文件是50G,可以根据自己的需求定制。
#root execute dd if=/dev/zero of=/home/map/trash/content/data.dbf bs=4k count=13045760 mkdir -p /home/map/trash/bin /home/map/trash/log /home/map/trash/data chown -R map:map /home/map/trash/content/data.dbf /home/map/trash/bin /home/map/trash/log /home/map/trash/data losetup /dev/loop1 /home/map/trash/content/data.dbf mkfs -t ext3 /dev/loop1 mount -t ext3 /dev/loop1 /home/map/trash/data </span>上面的代码我就不解释了,不懂的话可以百度一下,这是部署脚本之前的准备工作,没有什么难度。
2,创建删除脚本,该脚本包含了删除数据的一系列命令,超过10G的数据直接删除,大家可以根据数据量的大小来自我定制。
cat ~/trash/bin/rm.sh
#!/bin/bash recycle_dir=~/trash/data recycle_bin=~/trash/bin recycle_log=~/trash/log/rm.log function func_mv() { ls $1 1>/dev/null 2>/dev/null if [ $? != 0 ];then continue fi content=`du -sm $1 | awk '{print $1}'` cur_time=`date +%Y%m%d%H%M%S` if [[ $content -gt 10240 ]] || [[ -L $1 ]];then /bin/rm -rf $1 else file=${1##*/} if [ -z $file ] ;then file=`echo $1 | awk -F'/' '{ print $(NF-2) }'` fi mv $1 $recycle_dir/$cur_time\_$file if [[ $? -ne 0 ]] ;then sh $recycle_bin/clean.sh mv $1 $recycle_bin/$cur_time\_$file fi fi } { #log print echo "`date +%Y%m%d%H%M%S`" echo -e "`who am i` using command:rm $@" if [ $1 == "-r" ] ;then shift elif [ $1 == "-rf" ] ;then shift elif [ $1 == "-f" ] ; then shift elif [ $1 == "-fr" ] ; then shift elif [ $1 == "--help" ] ;then echo "You can use like this rm data/dir/link" exit 0 elif [ $1 == "-h" ] ;then echo "You can use like this rm data/dir/link" exit 0 elif [[ $1 == -* ]] ;then echo "Invalid option You can use /bin/rm !" exit 0 fi if [[ -z $1 ]] ;then echo "nothing to do" exit -1; fi array=$@ for data in $array do func_mv "$data" done } >> $recycle_log</span>代码我不一一解释,其实里面无非就是几个命令,锻炼一下自我查找问题的能力。
3,我们要创建自我回收脚本,不能让回收站持续的增长上去,撑满回收站分区的时候会导致删除数据过慢。
cat ~/trash/bin/clean.sh
#!/bin/bash high_line=400000 low_line=300000 recycle_dir=~/trash/data cd $recycle_dir size=`du -sm $recycle_dir | awk '{print $1}'` if [[ $size -gt $high_line ]] ;then while [[ $size -gt $low_line ]] do ls -t $recycle_dir | grep -v total | head -n 2 | xargs /bin/rm -rf size=`du -sm $recycle_dir | awk '{print $1}'` done fi</span>此处我们可以设置定时任务,我每天凌晨1点10分进行清理回收站的内容,当然不是全清,也不是随便清,从最早删除的数据开始清理,直到达到low_line。
crontab -l
10 01 * * * bash /home/map/trash/bin/clean.sh
4,这时候rm -rf 或者rm -r的时候还是调用系统自带的rm命令,我们可以用alias把rm命令链接到rm.sh脚本上
vi .bashrc
alias rm="/home/map/trash/bin/rm.sh"
在.bashrc里面加alias是某一个用户的设置,如果所有用户都用该脚本的话可以
vi /etc/profile 在底部加上alias rm="/home/map/trash/bin/rm.sh"就行了
如果想在所有用户都用这个回收站功能就要注意以下回收站的权限设置。
删除的数据会被放到~/trash/data/下,可以去查找到被删除的数据。
相关文章推荐
- 101个脚本之建立linux回收站的脚本
- Linux建立回收站
- 在linux下建立回收站
- 建立 arm-linux 交叉编译环境
- 10012.在USB存储设备上:建立Linux启动系统
- Linux下用vsftp建立个人ftp站点(一)
- 用linux建立自己的mp3广播站
- 在Linux上建立PostgreSQL数据库服务器
- linux下代码阅读环境的快速建立--lxr+glimpse
- 今天装了Linux,并且建立第一个文件和图片
- 从无到有,从头建立自己的Linux
- 英特尔将与北京科技委员会建立 Linux 实验室
- 轻松建立Linux拨号服务
- [ZT]用SRP建立安全的Linux FTP服务器
- Linux下用vsftp建立个人ftp站点(二)
- 用Visual Basic编程建立自己的回收站
- FSG, OSDL 合作建立企业Linux标准
- linux下用qmail建立邮件服务器
- 支持Netfilter的Linux以太网桥的建立