一、需求背景
在Linux上,可能存在误执行rm命令导致服务器崩溃的情况发生,
为尽量降低风险,故增加回收站功能。
二、增加回收站
1、编辑系统环境配置文件
vim /etc/profile
####### trash #######
mkdir -p ~/.trash # 路径可以自己创建和命名,不受限制,修改路径名后,记得修改下面三个函数里面的路径
alias rm=trash # 将rm别名成trash,调用trash函数
alias ur=undelfile # 使用别名定义一个ur命令,调用undelfile函数,作用是还原文件
function undelfile(){ # 通过$@将ur后面的参数逐一传给mv移动到当前目录下
mv -i ~/.trash/$@ ./ # mv -i 当目标文件存在时,提示是否覆盖
}
function trash(){ # 在终端输入的rm命令,会通过别名alias调用trash函数,再通过$@将rm后面的参数逐一传给mv移动到.trash目录下
mv $@ ~/.trash/
}
function cleartrash(){ # 在终端输入 cleartreash ,就会调用这里的函数,输入'y 或 Y',就会清空.trash目录下的内容
read -p "clear sure?[n]" confirm
[ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/* # /bin/rm 不受别名的限制,会直接删除文件
}
####### trash end #######
alias rm=trash
alias ur=undelfile
function undelfile(){
mv -i /home/trash/$@ ./
}function trash(){
mv $@ /home/trash/
}
function cleartrash(){
read -p "clear sure?[n]" confirm
[ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf /home/trash/*
}
####### trash end #######
2、使其立即生效
source /etc/profile
三、验证测试
1、删除文件测试
[
[
[
[
2 test.txt
2、删除目录测试
[
[
[
[
[
trash yxtf
[
[
2 dir test.txt
[
[
1 2 3 4 5
备注:使用绝对路径/bin/rm进行删除,不会被移动到回收站,会直接进行删除。
四、实现自动清理回收站
比如自动删除7天以前的回收站文件
vim trash.sh
find /home/trash -ctime 7 -type f -name "*" -exec /bin/rm -rf {} ;
实现每天0:00自动清理回收站
crontab -e
0 0 * * * /ops/trash.sh