通过Linux脚本实现回收站功能及自动化清理

Linux系统中,默认情况下使用rm命令删除的文件无法恢复。这对于经常处理重要文件的用户来说是个不小的隐患。为了解决这个问题,可以编写简单的Shell脚本来模拟回收站的行为。

创建回收站脚本

首先,我们需要创建一个脚本,用于将待删除的文件移动到一个特定的“回收站”目录中,并记录删除的时间戳,以避免文件名冲突。

[root@dev-rocky9-shanghai-area1 ~]# mkdir -p ~/.trash

编写trash.sh脚本

#!/bin/bash
# 回收站目录
TRASH_DIR="$HOME/.trash"

# 确保回收站目录存在
if [ ! -d "$TRASH_DIR" ]; then
    mkdir -p "$TRASH_DIR"
fi

# 判断是否提供了文件名参数
if [ $# -eq 0 ]; then
    echo "Usage: $0 file_or_directory"
    exit 1
fi

# 遍历所有传递的参数
for FILE in "$@"; do
    if [ -e "$FILE" ]; then
        # 获取当前日期时间,用于重命名文件防止冲突
        TIMESTAMP=$(date +%Y%m%d%H%M%S)
        BASENAME=$(basename "$FILE")
        NEW_NAME="${BASENAME}-${TIMESTAMP}"
        mv "$FILE" "${TRASH_DIR}/${NEW_NAME}"
        echo "Moved '$FILE' to '${TRASH_DIR}/${NEW_NAME}'"
    else
        echo "'$FILE' does not exist!"
    fi
done

设置别名和执行权限

[root@dev-rocky9-shanghai-area1 ~]# chmod +x /bin/trash.sh
[root@dev-rocky9-shanghai-area1 ~]# alias rm=/bin/trash.sh

自动化清理回收站

编写clean_trash.sh脚本

#!/bin/bash
# 回收站目录
TRASH_DIR="$HOME/.trash"

# 删除30天前的文件
find "$TRASH_DIR" -type f -mtime +30 -exec rm -f {} \;

echo "Trash cleaned up."

设置定时任务

(crontab -l ; echo "0 2 * * * /bin/clean_trash.sh") | crontab -  # 每天凌晨2点执行clean_trash.sh脚本,清理超过30天的文件

通过上述步骤,成功地在Linux系统中实现了基本的回收站功能,并配置了自动化的清理机制。这不仅可以保护用户免受误删文件的影响,还能确保磁盘空间得到合理的管理。未来可以根据需要对这些脚本进行扩展,比如增加文件恢复功能或更精细的清理策略。

上一篇
下一篇