近几天 GitLab 由于程序猿加班误删了几百 G 的数据,细细想来,自己也因为 rm -rf 闯过不少祸。所以想着在 Linux 下建一个回收站,每次执行 rm 命令时,将文件移动到回收站内,然后定时清除。Google 了一下,发现已经有 trash-cli 工具了。
安装 trash-cli:
$ apt-get install -y trash-cli
trash-cli 提供以下命令:
trash-put 或 trash 将文件或者目录放入回收站 trash-empty 清空回收站 trash-list 列出回收站文件 restore-trash 还原回收站文件(会显示列表,方便使用标号还原) trash-rm 删除回收站文件(单个永久删除)
在 ~/.bashrc 文件后加入配置,映射 rm 命令:
alias rm=trash-put alias rl=trash-list alias urm=restore-trash
添加完毕后保存,执行 source 命令使其生效:
$ source ~/.bashrc
测试:
root@lyn:/home/test# mkdir test root@lyn:/home/test# touch test1 test2 root@lyn:/home/test# ll total 12 drwxr-xr-x 3 root root 4096 Feb 3 17:05 ./ drwxr-xr-x 6 root root 4096 Feb 3 17:05 ../ drwxr-xr-x 2 root root 4096 Feb 3 17:05 test/ -rw-r--r-- 1 root root 0 Feb 3 17:05 test1 -rw-r--r-- 1 root root 0 Feb 3 17:05 test2 root@lyn:/home/test# rm test root@lyn:/home/test# rm test1 root@lyn:/home/test# rm test2 root@lyn:/home/test# rl 2017-02-03 17:05:45 /home/test/test 2017-02-03 17:05:55 /home/test/test2 2017-02-03 17:05:53 /home/test/test1 root@lyn:/home/test# urm 0 2017-02-03 17:05:45 /home/test/test 1 2017-02-03 17:05:55 /home/test/test2 2 2017-02-03 17:05:53 /home/test/test1 What file to restore [0..2]: 1 root@lyn:/home/test# ll total 8 drwxr-xr-x 2 root root 4096 Feb 3 17:06 ./ drwxr-xr-x 6 root root 4096 Feb 3 17:05 ../ -rw-r--r-- 1 root root 0 Feb 3 17:05 test2 root@lyn:/home/test# rm test2 root@lyn:/home/test# trash-empty root@lyn:/home/test# rl
所有功能正常,但是作为懒癌晚期,必须设置定时清理。利用 crontab -e 添加定时任务。输入:
0 2 * * * trash-empty
保存退出。
crontab 的详细用法:http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html
