Linux自定义回收站(CentOs7.8),具体实现就是首先将rm命令取别名,执行为我自己定义的删除脚本。脚本内容为将“rm”实现改为mv操作,根据移动的时间进行创建文件夹,并将“rm”操作的文件或文件名移动到创建的文件夹下。同时设置定时任务,定期清理自定义回收站数据。

为什么要做自定义回收站

  1. 数据恢复和备份: 自定义回收站允许用户将删除的文件移动到特定的目录,而不是永久删除它们。这样做的好处是即使意外删除了重要文件,用户仍然可以在回收站中找到它们,并且可以通过恢复操作将它们还原到原始位置。这种机制有助于避免数据丢失,并提供了一种简单的备份方式。
  2. 避免误删除: 有时候用户可能会意外删除了文件或目录,而实际上并不想删除它们。使用回收站可以在删除操作之后提供一个缓冲区,使用户有机会恢复删除的内容,从而减少了误删除所带来的损失。
  3. 保护文件安全: 将文件移动到回收站而不是直接删除,可以在某种程度上保护文件的安全性。特别是在多用户环境下,回收站可以允许管理员或用户恢复被误删除的文件,而不必担心文件被彻底删除或恶意篡改。
  4. 管理磁盘空间: 自定义回收站也可以帮助管理磁盘空间。通过定期清理回收站中的文件,可以释放磁盘空间并确保系统的正常运行。同时,可以根据需要设置回收站的大小或自动清理策略,以避免磁盘空间不足的问题。
    总的来说,自定义回收站提供了一种安全、方便的文件管理方式,可以帮助用户避免数据丢失和误操作,并在需要时轻松恢复文件。

一、设置删除命令别名

编辑个人环境变量

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

该流程中还存在有待提升的地方:

  1. 将定时任务进行优化,结合logrotate管理数据,只删除固定时间的数据。设定一个回滚切片数据的大小或时间,存为tar包,其余进行删除。
  2. 为了防止误删,可以专门创建一个用户用来进行清理自定义回收站的数据,普通用户仅能将文件或文件夹“删除”