给你的linux创建一个回收站
给你的linux创建一个垃圾篓/回收站,防误删
创建一个垃圾回收站,保存被删除距今3天的文件,过期则被删除
1. 在你的主目录下,创建文件夹 .trash
2. 在你的常用脚本目录下创建这俩脚本
Bash |
---|
| #!/bin/bash
TRASH_DIR="/home/lixy/.trash"
for i in $*; do
STAMP=`date +%s`
fileName=`basename $i`
if [[ -d $TRASH_DIR/$fileName.$STAMP ]];then
mkdir $TRASH_DIR/$fileName.$STAMP
fi
mv $i $TRASH_DIR/$fileName.$STAMP
done
|
Bash |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 | ##################################################
# File Name : /home/lixy/bin/removeRF.sh
# Author : biolxy
# E-mail : biolxy@aliyun.com
# Created Time: Wed 17 Apr 2019 02:48:47 PM CST
##################################################
#!/bin/bash
# 该文件夹下文件名字格式为 : JZ201810081226.1555481687
# 文件夹即为你设置的垃圾箱地 : /home/lixy/.trash
inputdir=`realpath $1`
STAMP=`date +%s`
cd ${inputdir}
for i in `ls -a $inputdir `
do
fileRemoveTime=${i##*.} # 表示从左边开始删除最后(最右边)一个 . 号及左边的所有字符
#if [ $fileRemoveTime ] # 检测字符串是否为空,不为空返回 true。
# ${#fileRemoveTime} 返回字符串长度,也是一个str
if [ ${#fileRemoveTime} = 10 ] # = 检测两个字符串是否相等,相等返回 true; 检测字符串长度是否等于10,等于则返回 true。
then
# echo $STAMP $fileRemoveTime
# echo ${#fileRemoveTime}
difference=$[ $STAMP - $fileRemoveTime ] # 支持的运算符与let相同,但也只支持整数运算
# echo $difference
# 24 * 60 * 60 * 3 = 259200 s 即 3 天
if [ $difference -gt 259200 ];then
echo "# `date` : rm file $i"
/usr/bin/rm -rf $i
fi
fi
done
|
3. 用 remove.sh 替换 rm
Bash |
---|
| vim ~/.bashrc # 你用的是zsh的话就改为 ~/.zshrc
chmod +x /home/lixy/bin/remove.sh # 给remove.sh 添加可执行权限
alias rm='/home/lixy/bin/remove.sh' # 替换rm, 保存退出
source ~/.bashrc # 刷新环境变量
|
替换过之后,rm
删除的文件,会被移动到 /home/lixy/.trash 文件夹,并且会在文件后添加 .1555481687
的后缀,该后缀为删除时的时间(秒)
4. 添加定时任务
Bash |
---|
| 30 6 * * * /bin/bash /home/lixy/bin/removeRF.sh /home/lixy/.trash > /home/lixy/.trash/remove.log
|
每天早上6.30 调用脚本,删除指定的.trash
文件夹下的文件,脚本中会根据文件移动到.trash 时添加的后缀,判断移动时间,移动时间大于3天的,即被 /usr/bin/rm
强制删除