通过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

目录
相关文章
|
Shell
Shell 文件包含
10月更文挑战第5天
178 4
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
353 6
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
10月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
284 4
|
10月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
533 3
|
12月前
|
存储 安全 Linux
Centos 8系统ext4文件系统类型进行扩容缩容 (LVM)
通过使用这些技术和工具,可以有效管理CentOS 8系统上的存储资源,确保系统在高负载和高并发情况下的稳定运行。
851 9
|
存储 Linux
Centos 8 磁盘扩展xfs文件系统 (LVM)
│ ├── 注意事项 │ ├── 备份数据 │ ├── 检查磁盘状态 │ └── 确认设备名称 │ └── 总结 ```
703 14
|
存储 Linux 数据安全/隐私保护
【CentOS 7】深入指南:使用LVM和扩展文件系统增加root分区存储容量
通过上述步骤,您可以在 CentOS 7 系统中使用 LVM 和扩展文件系统来增加 root 分区的存储容量。这种方法不仅灵活,还能在不中断系统运行的情况下扩展存储空间,非常适合生产环境。请确保在操作前备份重要数据,并仔细执行每一步骤,以确保系统稳定和数据安全。
1205 6
|
Shell Linux 网络安全
在Linux中,如何利用Shell把10台主机的当前时间写到一个文件里边?
在Linux中,如何利用Shell把10台主机的当前时间写到一个文件里边?
|
Shell 测试技术 Linux
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
312 3
|
网络协议 Shell Linux
Shell脚本配置Centos静态ip地址
这是一个用于在CentOS上设置静态IP的Shell脚本摘要: - 脚本交互式获取用户输入的IP地址、子网掩码、网关和DNS。 - 使用`sed`命令动态更新`/etc/sysconfig/network-scripts/ifcfg-ENS33`配置文件。 - 修改`BOOTPROTO`为`static`,并设置IP、NETMASK、GATEWAY和DNS1字段。 - 用`systemctl restart network`重启网络服务。 - 提示用户新配置的静态IP信息。
579 5