通过extundelete使用shell实现CentOS6 ext4文件系统误删除文件的恢复

简介: 通过extundelete使用shell实现CentOS6 ext4文件系统误删除文件的恢复

1.介质下载
路径:

链接:extundelete

提取码:ztj0

版本:extundelete.0.2.4

2.shell代码实现
extundelete.sh

!/bin/bash

Author:ztj

Date:2023/5/25

Description:误删除文件恢复脚本

Prerequisite:1.本地或网络yum源可用 2.root管理员用户执行 3.centos6 ext4

DiskName=$1
ARGS=1
E_BADARGS=65
E_PARTITION=66
E_DISK=67
E_UMOUNT=68
E_SOFTWARE=69
E_RECOVERY=70

脚本用法

if [ $# -ne "$ARGS" ];then
echo "Usage: basename $0 DiskName(E.g:$0 /dev/sdb1)"
exit $E_BADARGS
fi

磁盘分区判断

if [ ! -e $DiskName ];then
echo "磁盘分区不存在"
exit $E_PARTITION
fi

if ! [[ "$DiskName" =~ /dev/sd[a-g]+[1-9]+ ]];then
echo "请提供需恢复的磁盘分区,而非磁盘"
exit $E_DISK
fi

磁盘分区卸载

umount_disk()
{
mount | grep $DiskName &>/dev/null
num=$(echo $?)

echo $num

if [ $num -eq 0 ];then
cd ~
umount $DiskName &>/dev/null
if [ $? -ge 1 ];then
echo "磁盘umount异常,请人工干预"
exit $E_UMOUNT
fi
fi
}

安装extundelete-0.2.4.tar.bz2

install_extundelete()
{
if [ -e /root/extundelete-0.2.4.tar.bz2 ];then
cd /root
tar -jxvf extundelete-0.2.4.tar.bz2 &>/dev/null
sleep 0.5
ln -sv extundelete-0.2.4 extundelete &>/dev/null
cd extundelete
yum install -y gcc gcc-c++ e2fsprogs e2fsprogs-libs e2fsprogs-devel &>/dev/null
./configure &>/dev/null && make &>/dev/null && make install &>/dev/null && echo "Success" &>/dev/null
else
echo "extundelete-0.2.4.tar.bz2源码包不存在,请上传至/root目录下"
exit $E_SOFTWARE
fi
}

all恢复误删除文件

recovery_file()
{
cd ~
extundelete $DiskName --restore-all &>/dev/null
if [ $? -ge 1 ];then
echo "$DiskName分区恢复失败,请检查"
exit $E_RECOVERY
else
echo "请到$PWD/RECOVERED_FILES目录查看恢复的误删除文件"
fi
}

备注:

1.使用extundelete命令只能恢复centos6(rhel6)版本且文件系统为ext4(3/2)类型中文件误删的恢复。

2.对于centos7文件系统(xfs),通过在其挂载文件系统,并设置为ext4(3/2)类型来进行文件误删的恢复,命令extundelete命令是恢复不了,必须得是centos6(rhel6)版本且文件系统为ext4(3/2)类型的才行。
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/z19861216/article/details/130898852

main

umount_disk
install_extundelete
recovery_file

目录
相关文章
|
5月前
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
488 1
|
5月前
|
人工智能 机器人 Shell
【shell】文件读写及read用法
【shell】文件读写及read用法
|
5月前
|
缓存 Shell Linux
【Shell 命令集合 链接器(linker)工具】Linux ld命令 将目标文件与库链接为可执行文件或库文件
【Shell 命令集合 链接器(linker)工具】Linux ld命令 将目标文件与库链接为可执行文件或库文件
185 0
|
5月前
|
Shell Linux C语言
【Shell 命令集合 系统设置 】Linux 创建Kickstart文件mkkickstart命令 使用指南
【Shell 命令集合 系统设置 】Linux 创建Kickstart文件mkkickstart命令 使用指南
63 0
|
5月前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
134 0
|
12天前
|
Shell
Shell 文件包含
10月更文挑战第5天
27 4
|
5月前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
572 3
|
28天前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
2月前
|
Shell Linux 网络安全
在Linux中,如何利用Shell把10台主机的当前时间写到一个文件里边?
在Linux中,如何利用Shell把10台主机的当前时间写到一个文件里边?
|
2月前
|
API C# Shell
WPF与Windows Shell完美融合:深入解析文件系统操作技巧——从基本文件管理到高级Shell功能调用,全面掌握WPF中的文件处理艺术
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的关键组件,用于构建 Windows 桌面应用程序。WPF 提供了丰富的功能来创建美观且功能强大的用户界面。本文通过问题解答的形式,探讨了如何在 WPF 应用中集成 Windows Shell 功能,并通过具体示例代码展示了文件系统的操作方法,包括列出目录下的所有文件、创建和删除文件、移动和复制文件以及打开文件夹或文件等。
62 0