Linux自定义回收站(CentOs7.8),具体实现就是首先将rm命令取别名,执行为我自己定义的删除脚本。脚本内容为将“rm”实现改为mv操作,根据移动的时间进行创建文件夹,并将“rm”操作的文件或文件名移动到创建的文件夹下。同时设置定时任务,定期清理自定义回收站数据。
为什么要做自定义回收站
- 数据恢复和备份: 自定义回收站允许用户将删除的文件移动到特定的目录,而不是永久删除它们。这样做的好处是即使意外删除了重要文件,用户仍然可以在回收站中找到它们,并且可以通过恢复操作将它们还原到原始位置。这种机制有助于避免数据丢失,并提供了一种简单的备份方式。
- 避免误删除: 有时候用户可能会意外删除了文件或目录,而实际上并不想删除它们。使用回收站可以在删除操作之后提供一个缓冲区,使用户有机会恢复删除的内容,从而减少了误删除所带来的损失。
- 保护文件安全: 将文件移动到回收站而不是直接删除,可以在某种程度上保护文件的安全性。特别是在多用户环境下,回收站可以允许管理员或用户恢复被误删除的文件,而不必担心文件被彻底删除或恶意篡改。
- 管理磁盘空间: 自定义回收站也可以帮助管理磁盘空间。通过定期清理回收站中的文件,可以释放磁盘空间并确保系统的正常运行。同时,可以根据需要设置回收站的大小或自动清理策略,以避免磁盘空间不足的问题。
总的来说,自定义回收站提供了一种安全、方便的文件管理方式,可以帮助用户避免数据丢失和误操作,并在需要时轻松恢复文件。
一、设置删除命令别名
编辑个人环境变量
vim ~/.bashrc
以上是root用户的环境变量,还可以设置为其它用户或全局的环境变量,具体不再赘述,请根据实际情况进行操作。
# alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
alias rm='/usr/local/bin/rm.sh'
alias rl='ll /home/root/.trash/*'
alias surm='/bin/rm -i'
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
取别名的具体操作如上,将rm改为执行删除脚本,将rl定义为查看自定义回收站中存在哪些文件数据,将surm定义为实际的rm操作。
刷新环境变量
source ~/.bashrc
二、创建回收站
创建回收站文件夹
mkdir -p /home/root/.trash
创建文件删除脚本
编辑文件
vim /usr/local/bin/rm.sh
脚本具体内容如下:
#!/bin/bash
RECYCLE=/home/root/.trash
test ! -d ${RECYCLE} && mkdir -p ${RECYCLE} #if not trash folder,create one
_datedir=$(date +"%Y-%m-%d_%H")
_dstdir=${RECYCLE}/${_datedir}
test ! -d ${_dstdir} && mkdir -p ${_dstdir} #if not trash folder,create one
for _parms in $*
do
if [ -d ${_parms} ] || [ -f ${_parms} ];then
test -d ${_parms} && echo "${_parms} is directory" && mv ${_parms} ${_dstdir}/
test -f ${_parms} && echo "${_parms} is file" && mv ${_parms} ${_dstdir}/
else echo "${_parms} is not directory or file"
fi
done
以上脚本大致意思为:判断回收站是否存在当前时间(精确到小时)的文件夹,没有则创建,有则直接进行移动文件或者文件夹。
权限设定
chmod 777 /usr/local/bin/rm.sh
三、定时清空回收站内容
编辑定时任务
crontab -e
定时任务内容
@weekly /bin/rm -rf /home/root/.trash/*
定时任务设定
# 重启cron配置
systemctl restart crond
# 设置开机自启动
systemctl enable crond
该流程中还存在有待提升的地方:
- 将定时任务进行优化,结合logrotate管理数据,只删除固定时间的数据。设定一个回滚切片数据的大小或时间,存为tar包,其余进行删除。
- 为了防止误删,可以专门创建一个用户用来进行清理自定义回收站的数据,普通用户仅能将文件或文件夹“删除”