聊一聊执行 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. Java中AQS的原理与实现

    目录 1:什么是AQS? 2:AQS都有那些用途? 3:我们如何使用AQS 4:AQS的实现原理 5:对AQS的设计与实现的一些思考 1:什么是AQS ​ 随着计算机的算力越来越强大,各种各样的并行编 ...

  2. 嵌入式低功耗WiFi设备保活功耗分析

    (一)嵌入式低功耗设备介绍 在物联网(IoT)领域,设备可以使用以太网和无线网进行网络连接. 以太网: 网络稳定,带宽高,延迟低,但是以太网需要拉网布线,设备安装邻活便利性能差. 无线网络:安装位置灵 ...

  3. 2020中国系统架构师大会活动回顾:ZEGO实时音视频服务架构实践

    10月24日,即构科技后台架构负责人&高级技术专家祝永坚(jack),受邀参加2020中国系统架构师大会,在音视频架构与算法专场进行了主题为<ZEGO实时音视频服务架构实践>的技术 ...

  4. 说说 Linux 的 curl 命令

    cURL,熟悉 Linux 的同学,没有人不知道这个命令吧:) 它有非常非常多的参数,我这里就不复制粘贴了,有需要可以 -h 或者谷歌搜索看看. 我从实用性的角度,说下我比较常用的几个参数: -v:啰 ...

  5. 平时容易忽视的地方之一:java在抽取方法时,什么时候该用void

    当一个类中多个方法有相同编码,或该部分编码可以作为一个整体,适合抽取出一个方法时,要注意这个抽取的方法的返回值,什么时候可以用void,什么时候不能用void? 先看代码: import lombok ...

  6. Socket 入坑

    什么是Socket Socket(套接字)是在计算机网络中实现通信的一种机制.它提供了一种应用程序编程接口(API),允许应用程序通过网络进行数据传输和通信. 在网络通信中,Socket 可以被看作是 ...

  7. 使用supervisor守护freeswitch进程

    一.安装supervisor yum install -y epel-release yum install -y supervisor systemctl start supervisord sys ...

  8. 状压DP-学习笔记

    状压DP 状压 \(DP\) 是一种基于二进制数的 \(DP\). T1 题目大意 将一个整数 \(N\) 分解成若干个小整数的乘积,满足: 分解出的整数必须来自集合 \(S\). 分解出的整数必须互 ...

  9. 高德Android高性能高稳定性代码覆盖率技术实践

    ​前言 代码覆盖率(Code coverage)是软件测试中的一种度量方式,用于反映代码被测试的比例和程度. 在软件迭代过程中,除了应该关注测试过程中的代码覆盖率,用户使用过程中的代码覆盖率也是一个非 ...

  10. 关于api数据接口应用

    在当今互联网时代,API数据接口应用已经成为各行各业不可替代的技术,它可以让开发者更加轻松地访问和使用各种功能和数据,从而提高开发效率和用户体验.下面就让我们来详细了解API数据接口应用的相关内容. ...