Linux 教你如何预防删库到跑路
学习linux之前,有几个命令是必须记住的
我们最常见的删库命令
rm -rf /**
这个命令可以在你心情不好的时候,对着公司服务器操作一番,保证让你一时爽,
删完库这个时候你就该跑路了,但是你真的能跑的掉吗,恐怕等待你的就是牢狱之灾;
所以我们要在这里提前做好预防。
1.我们可以使用温和的删除命令,每一次删除都会要你进行确认,避免删错
rm -ir directory
2.在每一次删除前,我们先做好备份
touch test #新建文件
cp test test.bak #复制为带后缀bak的备份文件
mv test test.bak #修改为带后缀bak的备份文件
默认是当前路径,你也可以放在其他路径
mkdir backup #创建文件夹backup
mv test /backup/test.bak #将test文件移动到backup文件夹并且重命名为test.bak
3.将rm命令构建为自己的回收站,编辑 /etc/bashrc文件
vi /etc/bashrc
新增内容
### 重定义rm命令 ### # 定义回收站目录
trash_path='~/.trash' # 判断 $trash_path 定义的文件是否存在,如果不存在,那么就创建 $trash_path.
if [ ! -d $trash_path ]; then
mkdir -p $trash_path
fi # 定义别名:使用 rm 就调用 trash
alias rm=trash # 使用 rl 就调用 'ls ~/.trash'
# 如果更改上面的回收站目录这里的目录也需要修改
alias rl='ls ~/.trash' # 使用 unrm 就调用 restorefile,需要在删除目录的父目录下执行
alias unrm=restorefile # 使用 rmtrash 就调用 claearteash
alias rmtrash=cleartrash # 恢复文件的函数
restorefile()
{
mv -i ~/.trash/$@ ./
} # 删除文件的函数
trash()
{
mv $@ ~/.trash/
} # 清空回收站的函数
cleartrash()
{
read -p "确定要清空回收站吗?[y/n]" confirm
[ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/*
}
重新加载下文件,使配置生效
source /etc/bashrc
4.创建你刚才在文件中定义的回收站文件夹.trash
mkdir .trash
5.我们来进行测试一下
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# touch chen
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# mkdir bao
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# ls
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# rm -f chen
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# ll /root/.trash/ #查看回收站
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# rl #查看回收站
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# unrm chen #恢复文件
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# rmtrash #清空回收站
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# /bin/rm -r bao #强制删除文件
使用这种方式存在一个缺陷,每次删除同名文件,都会覆盖回收站原有的文件,那么这个时候我们怎么解决呢
编写shell脚本
vi rm.sh
于是乎,写了下面的shell脚本(rm.sh):
#version : 1.0
#author : zzy
# 删除文件
#主要功能,将文件已到指定的目录
#缺陷:当转移的目录中已经存在需要转移的文件时,尚未处理 recycle_dir=~/.recycle
if ! [ -d $recycle_dir ]
then
mkdir $recycle_dir
echo "创建目录$recycle_dir 保存删除得文件" ... ok
chmod 777 $recycle_dir
echo "修改权限" ..ok
fi
#将需要删除得文件移到该目录
file_dir=$(cd `dirname $1`; pwd)
file_name=`basename $1`
rmFiles="$file_dir/$file_name" cur_date=`date +%Y%m%d_%H_%M_%S`
save_dir="$recycle_dir/$cur_date"; if ! [ -e $save_dir ]
then
mkdir $save_dir
chmod 777 $save_dir
fi
save_dir="$save_dir/$file_name" if [ -e $rmFiles ]
then
if [ -e $save_dir ]
then
echo "$save_dir已经存在,可以通过-f选项移除之前的文件"
else
mv $rmFiles $save_dir
if [ $? -eq 0 ]
then
rm -rf $rmFiles
echo "$rmFiles已经成功删除...若想恢复,请到$save_dir中查找"
#添加日志
logTime=`date "+%Y-%m-%d %H:%M:%S"`
curUser=`whoami`
echo "[$curUser] $logTime $rmFiles ====> $save_dir" >> "$recycle_dir/del.log"
else
echo "请使用相对目录删除"
fi
fi
else
echo "你没有权限或是文件不存在哦!!!"
fi
给脚本授权
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# chmod 777 rm.sh
创建回收站目录
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# mkdir .recycle
测试脚本
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# touch index.html
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# ./rm.sh index.html
/root/index.html已经成功删除...若想恢复,请到/root/.recycle/20190708_20_29_12/index.html中查找
如果我嫌这个脚本太长了怎么办,没事,我们可以把他定义为自己的命令
编辑文件.bashrc
vi ~/.bashrc
添加内容
alias del=~/rm.sh

重新加载下文件
source .bashrc
测试下
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# touch hello.txt
[root@iZj6cet3mqlrzqmdk2a20qZ ~]# del hello.txt
/root/hello.txt已经成功删除...若想恢复,请到/root/.recycle/20190708_20_30_12/hello.txt中查找
github有一个完整的脚本,
github项目地址: https://github.com/LaiJingli/rmtrash
Linux安装
wget --no-check-certificate https://raw.githubusercontent.com/LaiJingli/rmtrash/master/rmtrash.sh
mv rmtrash.sh /bin/
chmod +x /bin/rmtrash.sh
单个用户授权
/bin/rmtrash.sh
所有用户授权
echo "alias rm=/bin/rmtrash.sh" >>/etc/bashrc
帮助命令
rm -h
如果有问题,执行以下2条命令排查,或者退出重新登录系统
source ~/.bashrc
alias |grep rm
如果需要彻底删除文件
rm -e 清空回收站
/bin/rm file 直接删除文件而不经过回收站
/bin/rm -r directory 直接目录而不经过回收站
如果你想设置某个目录不被删除,加个elif 条件
vi /bin/rmtrash.sh

测试结果

回收站存放的目录
cd .rmtrash
vi .rmtrash.log
原文地址:http://www.findme.wang/blog/detail/id/238.html
Linux 教你如何预防删库到跑路的更多相关文章
- 怎么避免从删库到跑路 -- 详解 mysql binlog 的配置与使用
1. 引言 使用数据库的时候,我们每个操作都十分小心,尤其是不能直接在数据库上执行 update.delete 等操作,否则万一忘记加全 where 条件,可能就会造成无法挽回的结果. 有一句十分流行 ...
- 理解Linux文档的默认安全机制、隐藏属性、特殊权限,妈妈在也不用担心你从删库到跑路!!!
写在前面 前面的章节 详解Linux文档属性.拥有者.群组.权限.差异,介绍了文档的基本权限,包括读写执行(r,w,x),还有文档若干的属性,包括是否为目录(d).文件(-).链接文件(l).拥有者. ...
- linux下递归删除目录下所有exe文件---从删库到跑路篇
linux下递归删除目录下所有exe文件 find . -name '*.exe' -type f -print -exec rm -rf {} \; (1) "." 表示从当前目 ...
- Redis勒索事件爆发,如何避免从删库到跑路?
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云数据库 TencentDB发表于云+社区专栏 9月10日下午,又一起规模化利用Redis未授权访问漏洞攻击数据库的事件发生,此次 ...
- MySQL从删库到跑路(三)——SQL语言
作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.SQL语言简介 1.SQL语言简介 SQL是结构化查询语言(Structured Query Language) ...
- MySQL从删库到跑路(一)——MySQL数据库简介
作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.MySQL简介 1.MySQL简介 MySQL是一个轻量级关系型数据库管理系统,由瑞典MySQL AB公司开发, ...
- mysql数据库从删库到跑路之mysql基础
一 数据库是什么 之前所学,数据要永久保存,比如用户注册的用户信息,都是保存于文件中,而文件只能存在于某一台机器上. 如果我们不考虑从文件中读取数据的效率问题,并且假设我们的程序所有的组件都运行在一台 ...
- mysql数据库从删库到跑路之mysql表操作
表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 id,name,qq,age称为字段,其余的,一行内容称为一条记录 内容: 1 创建表 ...
- mysql数据库从删库到跑路之mysql其他
一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 掌握: #1. 测试+链接数据 ...
随机推荐
- 写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么
怼一波,在项目中有很多经常用到,但又含糊不清的知识点 框架中的key: 1. 为啥在遍历元素时要用 key :在开发过程中为了保证遍历同级元素的唯一性,用来提高更新 dom 的性能: 2. 凭啥要保证 ...
- 6 Linux用户和用户组管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户都必须首相像系统管理员申请账号,然后以这个账号身份进入系统 每个用户账号都拥有一个唯一的用户名和各自的口令 用户在登陆时键入 ...
- PHP如何创建文件夹(mkdir的用法,mkdirs的语法)【转】
(PHPmkdir如何创建多级目录) 在开始之前,我先说明一下,可能许多朋友与我一样认为只要给一个路径,mkdir就可以创建文件夹,其它不是那样,单个的MKDIR只能创建一级目录,对于多级的就不 ...
- 遇到的一个Buffer too small问题
在ROI中输出图像时遇到 经调试后发现是driver.Create时设置的波段数大于实际写入的波段数导致的 这里xImgIn.m_nBands有204,但实际写入的数据的bands只有3,修改时忘了修 ...
- Odoo search 搜索视图详解与搜索视图工作原理
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826430.html 搜索视图 搜索视图的search标签本身没什么属性可以使用,只要是<searc ...
- docker学习11-上传本地镜像到镜像仓库
前言 在本地自己制作用过镜像后,上传到镜像仓库,这样方便在不同的机器上快速搭建同一套环境. 如果公开的话,别人也可以用你的镜像快速搭建环境,类似于 GitHub 本地代码上传到代码仓库,再从仓库拉取代 ...
- woocommerce直接调取产品描述内容
最近一位客户想让woocommerce产品页直接调取描述内容,不想太多的tab切换,太复杂,这个蛮简单的,woocommerce是在wordpress基础开发的,产品也是post的一种类型,直接调用c ...
- python相对导包问题
导包分为:绝对路径.相对路径 在测试时发现不能够使用相对路径 查过之后才知道: 运行模块(如:main.py)中导包只能使用绝对路径,不能使用相对路径 官方文档: Note that relative ...
- java 集合运算
package testjavapro; import java.util.BitSet; public class testjavaa { public static void main(Strin ...
- [cf113d]Museum
传送门 Solution 设一个状态为 \((x,y)\) 表示两人在的位置,求出每个状态期望出现的次数 设一个状态为 \(u\) , \(x_u^0=[u==(a,b)]\) 所以一个状态出现的次数 ...