ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux 防误删机制脚本

2022-04-28 21:01:20  阅读:165  来源: 互联网

标签:脚本 bin 误删 sh usr linux rm trash safely


linux 防误删机制脚本

1.1 背景介绍

linux系统下,经常有运维或者开发误删除,所以写了个脚本,防止误删除操作
简单思路就是创建个隐藏文件夹,用mv脚本替换rm命令

2.1 脚本详情



cat <<'EOF_INSTALL' > /usr/bin/rm_safely.sh
#!/bin/bash
# Created: Zhaoping.lu, 2021.12

# Purpose: 
# A replacement for rm command. Will move the target files into ~/.trash/trash_<time_flag> instead "rm". 
# And the trash folders elder than specified days will be pruged.

# Changes
# V1, 20211222, Created.

KEEP_DAYS=7    #文件保留天数
TRASH_BASE_DIR=$HOME/.trash

function usage() {
cat <<EOF2022
Usage: rm FILE...
Move files into $TRASH_BASE_DIR instead of deleting them.

EOF2022
exit 0
}
[[ -z $@ || $@ == "-h" || $@ == "--help" ]] && usage

CURR_TRASH_DIR=$TRASH_BASE_DIR/trash_$(date +"%Y%m%d_%H%M%S.%N")
mkdir -p $CURR_TRASH_DIR
[[ $? -ne 0 ]] && "Failed to create trash folder:$CURR_TRASH_DIR. Check disk free space. Quit." && exit 1

MV=/usr/bin/mv
RM=/usr/bin/rm

# process input arguments, skip command options
TARGETS=""
for FNAME in $@;
do
	if [[ ! "$FNAME" =~ ^- ]]; then
		TARGETS=$TARGETS" "$FNAME
	fi
done

$MV $TARGETS $CURR_TRASH_DIR

# clean trash files older than specified days
function delete_elder_than_days() {
DAYS=$1
TM_FLAG=$(date +"%Y%m%d_%H%M%S.%N" -d "$DAYS days ago")

find $TRASH_BASE_DIR -mindepth 1 -maxdepth 1 -name "trash_*" | awk -v rm_cmd=$RM -v trash_base_dir=$TRASH_BASE_DIR -v tm_flag=$TM_FLAG '{if ($0 < trash_base_dir"/trash_"tm_flag && $0 ~ /trash_/) {system(rm_cmd" -rf \""$0"\"");} }'
}


delete_elder_than_days $KEEP_DAYS

EOF_INSTALL

chown root:root /usr/bin/rm_safely.sh
chmod 755 /usr/bin/rm_safely.sh
echo "alias rm='/usr/bin/rm_safely.sh'" >> /etc/bashrc
echo "<Done>"

3.1 脚本部署

脚本特点:

  • 将“rm”设置为rm-safely.sh的别名
  • 执行rm时,实际上是将文件移动到了$HOME/.trash目录下,同时自动清理超期文件
  • 不具备restore命令,需要恢复文件时,直接到$HOME/.trash下找回文件即可
#创建文件/usr/bin/rm_safely.sh

chown root:root /usr/bin/rm_safely.sh
chmod 755 /usr/bin/rm_safely.sh

#仅对bash有效。使用其它shell时,则需要在相应的profile里添加此别名
echo "alias rm='/usr/bin/rm_safely.sh'" >> /etc/bashrc

标签:脚本,bin,误删,sh,usr,linux,rm,trash,safely
来源: https://www.cnblogs.com/liwenchao1995/p/16204501.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有