linux - rm命令删除文件到垃圾箱

修改原来的rm指令到垃圾箱,对于误操作的删除可以直接从垃圾箱里拉回来,同时提高网络安全意识。

创建remove.sh 脚本

PARA_CNT=$#
TRASH_DIR="/home/pass/.trash"   # 指定垃圾箱目录
for i in $*; do
      STAMP=`date +%Y%m%d`      # 删除时间
      fileName=`basename $i`
      mv $i $TRASH_DIR/$fileName.$STAMP   # 删除文件命令,放到垃圾箱
done

修改rm指令

vim ~/.bashrc  # 编辑文件
alias rm="sh /home/pass/tools/remove.sh"  # 末尾增加 rm 重定向

source ~/.bashrc  # 使修改文件生效

删除文件测试

pass@pass:~$ ls
nginx.conf  test.sh  tools  util.sh  uwsgi.ini  uwsgi.log  uwsgi.pid  while.sh
pass@pass:~$ rm nginx.conf test.sh util.sh
pass@pass:~$ ls
tools  uwsgi.ini  uwsgi.log  uwsgi.pid  while.sh

 检查删除的文件是否放到垃圾箱

pass@pass:~$ ls /home/pass/.trash/
nginx.conf.20240326  test.sh.20240326  util.sh.20240326

将文件从垃圾箱拉取到本地

pass@pass:~$ mv /home/pass/.trash/nginx.conf.20240326 ./nginx.conf
pass@pass:~$ ls
nginx.conf  tools  uwsgi.ini  uwsgi.log  uwsgi.pid  while.sh

定期删除垃圾数据,节省空间

创建定时任务

(注:首次创建会提示什么工具编辑,这里建议vim选择2)

pass@pass:~$ select-editor   该指令可以重新选择编辑器

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]: 2

pass@pass:~$ crontab -e
no crontab for pass - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]: 2

 定时任务设置方法

* * * * * rm -rf /home/pass/.trash/*

# 分钟 小时 天 月 星期  命令     每个 * 对应下面时间

 

# 0-59 0-23 1-31 1-12 0-6 command

验证定时清理任务的执行

46 * * * * rm -rf /home/pass/.trash/*   # 每小时第46分钟时执行该命令

service  cron restart  重新启动cron 工具

ubuntu 查看cron定时日志方法

sudo vim /etc/rsyslog.d/50-default.conf

cron.*   /var/log/cron.log # 找到该行,去掉


sudo service rsyslog restart   # 重新启动日志,使修改生效

验证结果:

pass@pass:~/.trash$ date
Tue 26 Mar 2024 01:44:25 PM UTC
pass@pass:~/.trash$ ls
log.log  test.log  test.sh
pass@pass:~/.trash$ date
Tue 26 Mar 2024 01:46:01 PM UTC
pass@pass:~/.trash$ ls
pass@pass:~/.trash$ cat /var/log/cron.log    检查定时任务日志执行成功
Mar 26 13:44:02 pass crontab[49512]: (pass) BEGIN EDIT (pass)
Mar 26 13:44:11 pass crontab[49512]: (pass) REPLACE (pass)
Mar 26 13:44:11 pass crontab[49512]: (pass) END EDIT (pass)
Mar 26 13:44:19 pass cron[49724]: (CRON) INFO (pidfile fd = 3)
Mar 26 13:44:19 pass cron[49724]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
Mar 26 13:46:01 pass CRON[50950]: (pass) CMD (rm -rf /home/pass/.trash/*)

查看定时任务的执行

pass@pass:~$ crontab -l                   查看定时任务

46 * * * * rm -rf /home/pass/.trash/*
pass@pass:~$ crontab -r                  删除定时任务
pass@pass:~$ crontab -l
no crontab for pass

第二个方法:

设置指定大小的文件,如超过100M的文件,使的用户无法删除。

(同时可以让超过指定大小的文件,提示用户输入二次权限认证,来删除该文件嘻嘻)

更新remove.sh

PARA_CNT=$#
TRASH_DIR="/home/pass/.trash"
for i in $*; do
      if [ -f "$i" ] && [ `ls –l $i|awk '{print $5}'` -gt 104857600 ]
         then
              echo "$i size is larger than 100M,can not delete it !"
              continue
      fi
      STAMP=`date +%Y%m%d`
      fileName=`basename $i`
      mv $i $TRASH_DIR/$fileName.$STAMP
done

验证结果:

pass@pass:/data$ ll
total 377460
drwxrwxrwx  3 root root      4096 Mar 26 15:57 ./
drwxr-xr-x 21 root root      4096 Mar 17 15:33 ../
-rw-rw-r--  1 pass pass       160 Mar 26 12:57 test.sh
-rw-rw-r--  1 pass pass       348 Mar 26 15:39 remove.sh
-rw-rw-r--  1 pass pass 193242281 Mar 26 15:57 test          该文件超过100M
pass@pass:/data$ rm test
test size is larger than 100M,can not delete it !                     提示无法删除
pass@pass:/data$ ll
total 377460
drwxrwxrwx  3 root root      4096 Mar 26 15:57 ./
drwxr-xr-x 21 root root      4096 Mar 17 15:33 ../
-rw-rw-r--  1 pass pass       160 Mar 26 12:57 test.sh
-rw-rw-r--  1 pass pass       348 Mar 26 15:39 remove.sh
-rw-rw-r--  1 pass pass 193242281 Mar 26 15:57 test
pass@pass:/data$ rm 2.sh

pass@pass:/data$ ll /home/pass/.trash/
total 188728
drwxrwxr-x 2 pass pass      4096 Mar 26 15:58 ./
drwxr-xr-x 8 pass pass      4096 Mar 26 15:58 ../
-rw-rw-r-- 1 pass pass       160 Mar 26 12:57 2.sh.20240326

第三个方法更新中。。。

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值