聊一聊执行 rm -rf 数据恢复以及建立 Linux 回收站

误删除 rm -rf

如果在Linux 平台下,执行 rm -rf 误删除文件,我们可以做哪些数据恢复的工作以及我们该如何应对不小心删除数据。

windows 恢复误删除文件相对比较简单,各种版本的磁盘工具都能轻松恢复。

本章节主要讲的是 centos7 下误删除文件的恢复。 由于 ext4 于 xfs 恢复方法不一样,所以准备 ext4 和 xfs 两种格式的分区:

为了最后确认数据, 这里从其他目录复制一份文件到测试目录:

[root@localhost data]# cp /etc/hostname /data/data-ext4/
[root@localhost data]# cp /etc/hostname /data/data-xfs/
[root@localhost data]# tree
.
├── data-ext4
│ ├── hostname
│ └── lost+found
└── data-xfs
└── hostname 3 directories, 2 files

ext4 误删除恢复

Ext 分区文件可以使用恢复工具 extundelete 来恢复。

  • 通过手动删除的方法对ext4分区的文件进行删除:
[root@localhost ~]# cd /data/data-ext4/
[root@localhost data-ext4]# rm -rf hostname
[root@localhost data-ext4]# ls
lost+found

开始安装恢复工具extundelete

# 安装恢复工具

[root@localhost ~]# yum install epel-release -y
[root@localhost ~]# yum install extundelete -y # 卸载分区/dev/vdb1; [root@localhost ~]# umount /dev/vdb1
# 执行恢复命令; [root@localhost ~]# extundelete /dev/vdb1 --inode 2

下面可以看到已经删除的文件了

恢复文件:extundelete /dev/vdb1 --restore-all

注意:最好是用--restore-all参数,恢复单个文件或者恢复目录可能会报错。

在当前目录下会创建一个RECOVERED_FILES目录,通过md5比对确认是同一个文件。

xfs 文件恢复

xfs 是用 xfsdump 于 xfsrestore 工具进行备份恢复。

安装 xfsdump

#安装xfsdump

yum install -y xfsdump
#利用xfsdump备份磁盘。 xfsdump -f /data/xfsbackup /dev/vdc1

模拟删除文件:

[root@localhost data]# cd data-xfs/
[root@localhost data-xfs]# ls
hostname
[root@localhost data-xfs]# rm -rf hostname
[root@localhost data-xfs]# ls
[root@localhost data-xfs]#

恢复文件:

[root@localhost data]# xfsrestore -f xfsbackup backup/
其中xfsbackup是上面执行xfsdump生成的备份文件,bakup/意思为文件恢复到指定目录

进入backup目录,通过MD5对文件进行校验,文件是刚刚删除的文件。

如何应对 rm -rf  (建立回收站)

工作中,由于 rm -rf 带来损失的新闻比比皆是,那我们应该做些什么来应对误删除呢?

方法有许许多多,这里介绍一个比较好一点的方法,建立rm 回收站。

vim ~/.bashrc
#注释掉rm=rm -i
#如何添加下面的内容

回收站演示:

使用rm -rf提示mv没有-r参数不能使用,利用rm 删除文件以后,利用rl就可以查看回收站内容,如果要彻底删除,就用cleartrash命令。

[root@localhost data]# rm -rf xfsbackup
mv: invalid option -- 'r'
Try 'mv --help' for more information.
[root@localhost data]# rm xfsbackup
[root@localhost data]# ls
data-ext4 data-xfs
[root@localhost data]# rl
xfsbackup
[root@localhost data]# cleartrash
clear sure?[n]y

总之,平时要养成重要数据备份的好习惯,恢复工具也不能保证百分百恢复,免得等误删除以后才追悔莫及。

希望大家能够多多关注,多年致力于互联网搬砖,各种互联网技术都稍有涉猎。

Linux 回收站的更多相关文章

  1. linux回收站设计

    linux回收站设计 在windows下有一个很好的东西,那就是回收站,虽然有很多人批评它.linux不是没有回收站,很多桌面环境都可以看到是有回收站的. 这里是讨论如何设计一个回收站,而不是有没有的 ...

  2. 打造Linux回收站

    linux是没有回收站概念的,一旦误删除文件了是很难很难找回来的,对普通用户而言误删除文件就等于永久性不可逆丢失数据了:不过可以改造一下rm命令来变相实现回收站功能,实际上就是mv命令转移文件到指定路 ...

  3. shell实现linux回收站的功能

    shell实现linux回收站的功能 下载: https://gitee.com/LoongWang/shellrecycling/repository/archive/master.zip 代码: ...

  4. Linux回收站的路径在哪里?

    linux 回收站的路径:-/.local/share/Trash

  5. Linux回收站(改写rm防止误删文件无法恢复)

    rm -rf 慎用 命令敲得多了,常在河边走,难免会湿鞋 昨天,一个手误,敲错了命令,把原本想要留的文件夹给rm -rf掉了 几天心血全木有了,靠,死的心都有了 经百度,google以及尝试无果,哎, ...

  6. 系统优化——建立linux回收站机制

    前言: linux系统下的rm是不可挽回的,命令设计本身没有问题,问题在于我们通常非常的自信,执行的时候喜欢rm -rf,这样的话就非常危险了,在执行的时候如果执行命令不对,甚至是执行的目录不对,那么 ...

  7. linux 回收站的添加

    在~下     .bashrc或者.bash_profile加入 mkdir -p ~/.trash     alias rm=trash       trash()     {      mv $@ ...

  8. Linux回收站[改写rm防止误删文件无法恢复]

    http://blog.csdn.net/wklken/article/details/6898590

  9. 《Linux命令、编辑器与shell编程》第三版 学习笔记---002

    <Linux命令.编辑器与shell编程>第三版 学习笔记---001 Linux命令.编辑器与shell编程 Shell准备 1.识别Shell类型 echo  $0 echo $BAS ...

  10. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

随机推荐

  1. Unity的IPostBuildPlayerScriptDLLs:深入解析与实用案例

    Unity IPostBuildPlayerScriptDLLs Unity IPostBuildPlayerScriptDLLs是Unity引擎中的一个非常有用的功能,它可以让开发者在构建项目后自定 ...

  2. 电脑安装JDk

    JDK软件下载链接:https://pan.baidu.com/s/1OG6wD-Fvgxu6FwuOUMDmQQ提取码:yu0l Eclipse软件下载链接:https://pan.baidu.co ...

  3. async/await初学者指南

    JavaScript中的async和await关键字提供了一种现代语法,帮助我们处理异步操作.在本教程中,我们将深入研究如何使用async/await来掌控JavaScript程序中的流程控制. 总览 ...

  4. python分割多个分隔符

    想一次指定多个分隔符,可以用re模块 import retext='3.14:15'result = re.split('[.:]', text)print(result) 输出结果如下: ['3', ...

  5. JavaScript代码片段精选

    今天,我在职坐标的微信公众号里面看到了关于  JavaScript代码片段精选 的 微信软文.在实际开发中,我们经常会使用的JS来实现某些功能.今天,就在此总结一下. 1.浮点数取整 const x ...

  6. [ansible]wget批量调用shell脚本

    前言 相较于使用playbook,个人更习惯于编写shell脚本.如果需要多台服务器执行某一任务,可以将脚本放在某个http服务目录下,比如nginx,然后通过ansible的shell模块让服务器通 ...

  7. debian11安装mysql5.7

    前言 mysql官网5.7版本的只找到debian10的,没有debian11的,试了下也能用. 系统版本:debian 11 mysql版本:5.7.35 步骤 下载bundle的tar包.官网地址 ...

  8. python实现创建一个银行类,这个类实现了两个方法,第一个方法可以将用户信息写入到文件中,第二个方法可以读取文件中的用户信息出来

    class bank: def user_info(self): a=input('请输入用户信息:') # 不写encoding = 'utf-8'中文会乱码 with open('info.txt ...

  9. Dokcer学习之旅(1)——运行一个简单的容器

    基本概念 镜像 我们都知道,操作系统分为 内核 和 用户空间.对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持.而 Docker 镜像(Image),就相当于是一个 ...

  10. 高级SQL分析函数-窗口函数

    摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 SQL语句中,聚合函数在统计业务数据结果时起到了重要作用 ...