Linux从删库到跑路的命令,从删库到跑路——重写 rm -rf

39ea56f92ef59714a5b9b2e588427ceb.png

是什么鬼

rm 命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

可能是噩梦

使用 rm 命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。

rm 命令可以用 -i 选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入 y 并按 Enter(回车) 键,才能删除文件。如果仅按 Enter(回车) 键或其他字符,文件不会被删除。

真正的噩梦

sudo rm -rf /*

dc891491ac4656002c198b8947b1ecbd.png

别人噩梦

搜索了一下误操作 rm -rf ,感受一下心情:

经验一:rm -rf ./*XXXX* 小手一抖变成了 rm -rf ./* XXXX*。3 秒没完成,第一反应,TMD,不对劲,貌似这次删除时间有点长。一顿 Ctrl+C。虽然中止了操作,还是少了很多文件。

经验二:自信满满,飞快的敲下sudo rm -rf /,十五分钟跑完,一干二净,%……%&%……&%&&……%。

经验三:小手一抖用 root 执行了 rm -rf /*,屏幕滚动,突然有这样的提示输出 “cannot remove **”,一顿 Ctrl+C,结果你懂的。

重写 rm 命令

思路:把 rm 命令重写成 mv 命令,将文件转移到特定的目录,确定对系统没有影响,再去清空目录。

重写命令 rm ,删除的文件都会被移动到 ~/Trash 文件夹下。

ubuntu@ip-172-31-19-168:~$ mkdir temp

ubuntu@ip-172-31-19-168:~/temp$ git clone https://github.com/lagerspetz/linux-stuff

Cloning into 'linux-stuff'...

remote: Enumerating objects: 850, done.

remote: Total 850 (delta 0), reused 0 (delta 0), pack-reused 850

Receiving objects: 100% (850/850), 998.42 KiB | 294.00 KiB/s, done.

Resolving deltas: 100% (379/379), done.

Checking connectivity... done.

ubuntu@ip-172-31-19-168:~/temp$ ls

linux-stuff

ubuntu@ip-172-31-19-168:~/temp$ sudo mv linux-stuff/scripts/saferm.sh /bin

ubuntu@ip-172-31-19-168:~/temp$ alias rm=saferm.sh

ubuntu@ip-172-31-19-168:~/temp$ source ~/.bashrc

ubuntu@ip-172-31-19-168:~/temp$ ls linux-stuff/

README.md firefox-dark-theme games gnome hybrid-graphics-and-pm legacy metapackage scripts sources.list.d

ubuntu@ip-172-31-19-168:~/temp$ rm -rf ./*

Moving ./linux-stuff to /home/ubuntu/Trash

ubuntu@ip-172-31-19-168:~/temp$ ls

ubuntu@ip-172-31-19-168:~/temp$ ls /home/ubuntu/Trash/

linux-stuff

ubuntu@ip-172-31-19-168:~/temp$ ls /home/ubuntu/Trash/linux-stuff/

README.md firefox-dark-theme games gnome hybrid-graphics-and-pm legacy metapackage scripts sources.list.d

问题来了,Trash 里面的文件怎么清除掉呢?

rm -u

ubuntu@ip-172-31-19-168:~$ ls ./Trash/

linux-stuff

ubuntu@ip-172-31-19-168:~$ rm -rfu ./Trash/*

Deleting ./Trash/linux-stuff

ubuntu@ip-172-31-19-168:~$ ls ./Trash/

ubuntu@ip-172-31-19-168:~$

可选命令参数

ubuntu@ip-172-31-19-168:~$ rm -h

This is saferm.sh 1.16. LXDE and Gnome3 detection.

Will ask to unsafe-delete instead of cross-fs move. Allows unsafe (regular rm) delete (ignores trashinfo).

Creates trash and trashinfo directories if they do not exist. Handles symbolic link deletion.

Does not complain about different user any more.

Usage: /path/to/saferm.sh [OPTIONS] [--] files and dirs to safely remove

OPTIONS:

-r allows recursively removing directories.

-f Allow deleting special files (devices, ...).

-u Unsafe mode, bypass trash and delete files permanently.

-v Verbose, prints more messages. Default in this version.

-q Quiet mode. Opposite of verbose.

总结

重写 rm 之后,可以在一定程度上避免由于手抖、盲目自行带来的严重的后果。

还有一个问题,多台服务器的话,每一台服务器都这样设置不太现实。下次尝试使用 aws 的 User Data,在服务器重启或者创建的时候把设置 rm 重写设置好。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值