Linux 安全rm
先将shell脚本放在某个全局路径下,如/usr/local/bin
#!/bin/sh
# safe rm
# Don't remove the file, just move them to a temporary directory.
# Files are grouped by remove time.
# e.g.
# # pwd => /home/work/
# > rm -r -f aa
# 'aa' will move to ~/.TrashHistory/20141018/aa@120111@_home_work_aa
RM_BACKUP_PATH=~/.Trashhistory
if [ ! -d "$RM_BACKUP_PATH" ]; then
mkdir "$RM_BACKUP_PATH"
fi
function safe_rm() {
# skip cmd option, e.g. '-rf' in 'rm -rf a b' or '-r/-f' in 'rm -r -f a b'
if [ $# -lt 1 ]; then
echo 'usage: rm -f [-dPRrvW] file ...'
exit 1
fi
first_char=${1:0:1}
until [ ! "$first_char" = "-" ]
do
shift
first_char=${1:0:1}
done
# check param
if [ $# -lt 1 ]; then
echo 'usage: rm -f [-dPRrvW] file ...'
exit 1
fi
today=`date +"%Y%m%d"`
mvpath=${RM_BACKUP_PATH}/$today
# support for multi version
timestamp=`date +"%H%M%S"`
# create dir if path non-exist
if [ ! -d $mvpath ]; then
mkdir $mvpath
fi
until [ $# -eq 0 ]
do
# fetch absolute path of the file
fpath=$1
fchar=`echo "${fpath:0:1}"`
if [ "$fchar" = "/" ]; then
dist_path="_${fpath}"
else
abs_fpath=`pwd`/$fpath
dist_path="${fpath}@${timestamp}@${abs_fpath}"
fi
# substitue '/' to '_'
final_dist_path=${dist_path//\//_}
# mv to temp trash
mv $fpath $mvpath/$final_dist_path
# next file
shift
done
}
然后alias
alias rm=". /usr/local/bin/safe_rm.sh && safe_rm "
并source
Linux 安全rm的更多相关文章
- 禁用Linux bash rm --force
防止无意的Linux bash rm --force 二.禁用rm -rf 因为rm -rf 删除文件的时候,经常会不小心将系统文件或者多个有用的目录删除掉.有两种方法:1,每次删除都用-i(inte ...
- Linux中rm命令详解
linux下rm命令使用详解---linux删除文件或目录命令 用户可以用rm命令删除不需要的文件.该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除 ...
- linux下rm -r误删NTFS文件恢复方法
一时疏忽,手一抖,把整个挂载的F盘删了一半!顿时傻眼!! 被删的F盘是Windows下NTFS分区,在Ubuntu12.04中挂载了F盘,使用rm命令时粗心大意,误删了一半的数据. 血的教训告诉我们, ...
- linux下rm命令修改,增加回收站功能【笔记】
一个脚本,linux的用户根目录下.bashrc最后加入如下代码,可以修改rm命令,让人们rm时候不再会全部删除,而是会加入到回收站里,以下是根据别人的资料参考修改的,不是原创 加入后,需要sourc ...
- [rm] Linux 防止"rm -rf /" 误删除
一.缘由: 最近看到这则新闻,很是悲伤,因为我最近也在用ansible:然而这一错误源自Ansible上糟糕的代码设计,这款Linux实用工具被用于在多台不同服务器上自动执行脚本. 开发者解释到,实际 ...
- Linux中RM快速删除大量文件/文件夹方法
昨天遇到一个问题,在Linux中有一个文件夹里面含有大量的Cache文件(夹),数量级可能在百万级别,使用rm -rf ./* 删除时间慢到不可接受.Google了一下,查到了一种方法,试用了下确实比 ...
- linux下rm误删除数据库文件的恢复方法
在linux redhat 5.4版本,rm误删除数据库文件的恢复过程分享.测试没有问题,可用. 1.首先测试rm 误删除数据库文件 [oracle@primary dbwdn]$ ll total ...
- Linux将rm命令设置为回收站【转】
一个方案就是重定向 rm 命令以嫁接为 mv 命令,相当于给 Linux 系统定制了一个回收站. 实现方式如下: ### 重定义rm命令 ### # 定义回收站目录 trash_path='~/.tr ...
- Linux笔记 rm -rf 嘻嘻
学习目标:常用linux命令的使用 JAVAEE :后台应用都会涉及到linux系统,应用程序的部署,运维,分布式集群,大数据,云计算 虚拟机:虚拟出来的计算机 虚拟机软件:用来产生虚拟机的一个软件 ...
- 记linux下rm误删bin文件的解决方式
平常有个坏习惯,删文件为了快点,喜欢用rm xx*,删除一些关键词文件.今天为了删/bin下几个含有mix关键词的文件,使用命令rm mix*.手贱,mix和*之间多了个空格...灾难发生了!bin下 ...
随机推荐
- HDU - 6336 Problem E. Matrix from Arrays (规律+二维前缀和)
题意: for (int i = 0; ; ++i) { for (int j = 0; j <= i; ++j) { M[j][i - j] = A[cursor]; cursor = (cu ...
- javascript Date对象 之 设置时间
之前对js的date对象总是感觉熟悉,而不愿细细深究其所以然,所以每当自己真正应用起来的时候,总会糊里糊涂的,今日花费2个小时的时间仔细钻研了一下,感觉 豁然开朗,故,以此记录,一来 供以后查阅,二来 ...
- js 的一些兼容性写法
①添加事件方法 addHandler:function(element,type,handler){ if(element.addEventListener){//检测是否为DOM2级方法 ...
- gh-ost测试
gh-ost测试 1.不支持没有主键或者唯一索引的表 2018-08-24 09:53:33 FATAL No PRIMARY nor UNIQUE key found in table! Baili ...
- jQuery农历黄历日期表
在线演示 本地下载
- zabbix api
#!/usr/bin/env python # -*-coding:utf-8 -*- import requests import json class AutoZabbix: def __init ...
- 网络性能监测工具smokeping
smokeping简介: smokeping是rrdtool的作者Tobi Oetiker的作品,所以它在图形显示方面有很大优势,也是一个很有特点的opensource工具:多种探测方式,包括fpin ...
- LAMP脚本
A goal is a dream with a deadline. Much effort, much prosperity. 环境:CentOS release 6.5 2.6.32-431.e ...
- [BZOJ1257]余数之和
Description 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值 其中k mod i表示k除以i的余数. 例如j(5 ...
- vs2017创建dotnetcore web项目,并部署到centos7上
一.打开vs2017创建web项目 二.简单的创建项目后,发布项目 三. 在centos上创建webroot目录,将发布的项目文件复制到该目录下(本人用虚拟机测试) 四.在webroot目录下打开终端 ...