2分钟

课程背景

实验时长:30 分钟

1. 课程背景

1.1 课程目的

目前主流版本Linux的文件系统中,被rm -rf命令删除的文件无法直接恢复。因误操作造成“删库跑路”的事件数不胜数。生产环境中通常通过权限、备份等手段避免此类操作造成的数据损失。本课程基于Linux Shell编程,编写基于Shell的“回收站”脚本,将写好的脚本内置于特定的Linux主机上,对环境变量稍加改造,即可实现类似于Windows回收站的效果,为rm -rf命令提供挽回的余地。同时,通过Shell脚本的编写和使用,使学员掌握Shell脚本中流程控制语句的编写、Shell变量的使用,以及Shell对系统文件的判断方法,并使学员理解Linux操作系统中环境变量的基本工作机制与配置操作。

1.2 课前知识准备

1.相关概念

  • 腾讯云服务器CVM:腾讯云服务器CVM(Cloud Virtual Machine)是腾讯云提供的可扩展的计算服务,可用于实现传统自建服务器的几乎所有功能。使用CVM避免了使用传统服务器时需要预估资源用量及前期投入,帮助用户在短时间内快速启动任意数量的云服务器并即时部署应用程序。腾讯云CVM支持用户自定义各种资源,包括自定义CPU、内存、硬盘、网络、安全等等,并可以在需求发生变化时快捷方便地调整它们,以适应业务的弹性需求。相关云服务器概念可以参考腾讯云文档中心云服务器概述
  • Linux:Linux是在Unix操作系统基础上开发出来的类Unix操作系统,具备开源、稳定、安全、高效的优良特性,被广泛应用于全球各大企业IT环境。常用的Linux发行版包括CentOS、Ubuntu等多种版本,用户也可以根据自己的实际需要对Linux进行个性化定制开发,以满足业务的各种需求。

2.相关原理

  • 回收站给用户提供一个找回被删文件的挽回余地,避免误删文件造成的数据损失,本质是“延迟删除”。被删的文件还在硬盘上,只是被隐藏到另一个目录,并被重命名(因为可能会连续删除多个同名文件,使用原名会有冲突),一段时间后再自动或手动清空回收站,释放空间。
  • 根据以上内容可以看出:回收站里的文件实际还在硬盘上,因此不可能100%释放原文件的存储空间,如果是为了释放空间而删除文件,只能选择将文件移动到另一个硬盘分区的回收站(释放当前分区空间,但占据了另一个分区的空间)。这种方式会带来新的问题:跨硬盘分区移动文件相当于对所有文件进行一次全量的读写操作,因此当被删的文件很大或很多时,速度很慢。所以Windows回收站、HDFS回收站都是放置在当前分区或当前目录下,这样删除文件时,仅仅是硬盘分区内部的文件移动,本质上是文件路径的修改,效率较高。
  • 如果是为了释放空间而删除文件,建议手动移动文件到其他分区。因为Linux的文件系统、挂载点、剩余空间的情况有很多可能,文件可能需要从A分区移到B分区,也可能由B分区移动到A分区,完全根据用户业务需求确定,不能简单地直接移到剩余空间最大的分区。也可能系统一共只有一个分区,无处可移。因此参照Windows、HDFS等通用的处理方式,回收站目录直接建立在当前目录下,对较大的文件给出警告提示即可。
  • 实现回收站功能,需要编写rm.sh脚本代替系统原有的rm命令。删除文件时,默认把文件转移到隐藏回收站,但不会立即释放空间。对于较大的文件,给出警告信息,允许调用rm命令彻底删除。对于进入回收站的文件,设置计划任务,超过保留期限后自动彻底删除,释放空间。
实验原理图