欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 生产环境 rm 命令改造做备份

生产环境 rm 命令改造做备份

2025/2/7 6:51:23 来源:https://blog.csdn.net/weixin_53742691/article/details/141435191  浏览:    关键词:生产环境 rm 命令改造做备份

在这里插入图片描述

今天的努力并不会在明天就开花结果,也许后天也不会,也许一个月,两个月也不会,但是,请相信,时机未到,终有一天,你会感激今天的自己,不曾怯懦堕落!

在生产环境中使用 rm 命令时,直接删除文件可能会导致误操作,带来不可恢复的数据丢失。为了避免这种风险,可以为 rm 命令添加一个垃圾桶回收机制,使删除的文件先移动到一个“回收站”目录,而不是直接删除。这样,你可以在需要时恢复误删的文件。以下是详细的步骤来实现这一功能。

1. 创建回收站目录

首先,需要创建一个目录,用于存放被“删除”的文件。通常,这个目录可以放在用户的主目录下,并命名为 .trash,使其成为一个隐藏目录。

执行以下命令来创建回收站目录:

mkdir -p ~/.trash

这里 -p 选项的作用是如果父目录不存在则创建它(在这种情况下是 ~/.trash)。这个目录将作为所有“删除”文件的暂存地。

2. 创建自定义 rm 脚本

为了替代系统默认的 rm 命令,创建一个自定义的脚本。当用户输入 rm 命令时,这个脚本会将文件移动到回收站目录,而不是直接删除它们。

2.1 编写脚本

在用户的主目录下创建一个名为 safe_rm 的脚本文件:

nano ~/safe_rm

将以下内容粘贴到 safe_rm 文件中:

#!/bin/bash# 定义回收站目录的路径
TRASH_DIR=~/.trash# 如果回收站目录不存在,则创建它
if [ ! -d "$TRASH_DIR" ]; thenmkdir -p "$TRASH_DIR"
fi# 遍历传入的所有参数(即要删除的文件/目录)
for FILE in "$@"; do# 检查文件或目录是否存在if [ -e "$FILE" ]; then# 获取当前时间戳,用于防止文件名冲突TIMESTAMP=$(date +%Y%m%d%H%M%S)# 提取文件名和路径BASENAME=$(basename "$FILE")# 将文件移动到回收站目录,并重命名以防冲突mv "$FILE" "$TRASH_DIR/${BASENAME}_${TIMESTAMP}"# 输出移动文件的操作结果echo "Moved $FILE to $TRASH_DIR/${BASENAME}_${TIMESTAMP}"else# 如果文件不存在,输出错误信息echo "Error: $FILE does not exist"fi
done
2.2 解释脚本逻辑
  • TRASH_DIR=~/.trash:定义了回收站的路径。
  • if [ ! -d "$TRASH_DIR" ]; then ... fi:检查回收站目录是否存在,如果不存在则创建它。
  • for FILE in "$@"; do ... done:遍历所有传递给脚本的参数,即将要删除的文件或目录。
  • if [ -e "$FILE" ]; then ... fi:检查文件或目录是否存在。
  • TIMESTAMP=$(date +%Y%m%d%H%M%S):生成一个时间戳,用于防止文件名冲突。
  • BASENAME=$(basename "$FILE"):提取文件或目录的名称。
  • mv "$FILE" "$TRASH_DIR/${BASENAME}_${TIMESTAMP}":将文件移动到回收站,并加上时间戳以防止重名文件冲突。
  • echo "Moved $FILE to $TRASH_DIR/${BASENAME}_${TIMESTAMP}":输出操作结果。
2.3 赋予脚本可执行权限

保存并退出编辑器后,赋予脚本可执行权限:

chmod +x ~/safe_rm

这样就可以使用 ~/safe_rm 脚本来代替系统的 rm 命令。

3. 配置系统使用自定义 rm 脚本

为了让系统默认使用我们刚刚创建的 safe_rm 脚本,而不是默认的 rm 命令,需要创建一个别名。这样每次输入 rm 命令时,都会调用我们自定义的 safe_rm 脚本。

3.1 添加别名到配置文件

打开你的 Shell 配置文件,如 .bashrc(如果你使用的是 Bash)或 .zshrc(如果你使用的是 Zsh):

nano ~/.bashrc  # 如果你使用的是 Bash
# 或
nano ~/.zshrc  # 如果你使用的是 Zsh

在文件的末尾添加以下行:

alias rm="~/safe_rm"

保存并退出编辑器。

3.2 使别名生效

要使刚刚添加的别名生效,运行以下命令以重新加载配置文件:

source ~/.bashrc  # 如果你使用的是 Bash
# 或
source ~/.zshrc  # 如果你使用的是 Zsh

从现在开始,当你在终端中使用 rm 命令时,它将调用 safe_rm 脚本,将文件移动到回收站而不是直接删除。

4. 恢复误删的文件

如果你需要恢复误删的文件,只需从回收站目录中移动文件到原始目录即可。例如:

mv ~/.trash/filename_timestamp /original/path/

你也可以根据时间戳或文件名在回收站目录中查找文件。

5. 清理回收站

随着时间的推移,回收站中的文件会逐渐增加,占用磁盘空间。你可以定期清空回收站。可以创建一个脚本来自动执行这个任务。

5.1 创建清理脚本

创建一个名为 empty_trash 的脚本:

nano ~/empty_trash

在脚本中输入以下内容:

#!/bin/bash# 清空回收站目录中的所有文件
rm -rf ~/.trash/*
5.2 赋予清理脚本可执行权限

保存并退出编辑器后,赋予脚本可执行权限:

chmod +x ~/empty_trash
5.3 执行清理

你可以手动执行这个脚本来清空回收站:

~/empty_trash

6. 自动清理回收站(可选)

如果你希望定期自动清理回收站,可以使用 cron 来安排定时任务。

6.1 编辑 crontab

打开 crontab 编辑器:

crontab -e
6.2 添加定时任务

添加以下行以每天凌晨3点自动清空回收站:

0 3 * * * ~/empty_trash

保存并退出编辑器。现在系统将每天自动清空回收站。

总结

通过这些步骤,你可以在生产环境中为 rm 命令添加一个垃圾桶回收机制,从而避免误删文件带来的风险。这个机制将文件移动到一个专门的回收站目录,并且可以根据需要恢复文件或者定期清理回收站。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com