前提条件
Linux系统误删除文件时,可以使用extundelete工具尝试恢复。
centos系统执行命令yum install extundelete
-y安装
ubuntu系统执行命令apt-get install
extundelete安装
安装完成后可执行命令extundelete -v查看版本
对误删除文件进行恢复时,为避免对删除文件所在文件系统写覆盖,应将误删除文件恢复至其他文件系统。
如误删文件存放在数据盘上,则应将文件恢复至系统盘路径下。
如误删除文件存放在系统盘,建议关闭云主机,参考文档(https://docs.jdcloud.com/cn/virtual-machines/create-private-image)制作私有镜像,
然后参考文档(https://docs.jdcloud.com/cn/virtual-machines/detach-cloud-disk)将云主机系统盘卸载,
再创建一个按配置计费的相同地域相同可用区以及和误删文件所在云主机相同操作系统版本的临时云主机,参考文档(https://docs.jdcloud.com/cn/virtual-machines/attach-cloud-disk)
将误删文件的云主机系统盘作为数据盘挂载至临时云主机,然后在临时云主机上进行数据恢复操作。
将数据恢复至临时云主机的系统盘或者其他数据盘。恢复完成后将误删文件的云主机系统盘卸载,挂载回原来的主机。
注意,敲黑板:
挂载时需要参考图片更改挂载类型,作为系统盘挂载,否则会导致云主机无法启动。
为避免文件被误删后因其他IO操作导致原文件数据块被写覆盖,应立刻卸载文件所在文件系统。
如文件存放在系统盘上,建议将系统关闭按照上面所述方法把系统盘挂载到其他云主机,以提高文件恢复的概率。
以存放在数据盘上的文件被误删举例,将云硬盘上/mnt/current目录下的VERSION文件删除。
删除文件后将云硬盘文件系统卸载。
执行命令extundelete /dev/vdb1
--inode 2,扫描云硬盘文件系统/dev/vddb1的根路径下所有文件。
扫描结果在命令输出最下方,已被删除的文件或目录会被标识为Deleted。
我们删除的文件在子目录current下,记录current目录的inode号1048577,对该目录进行扫描
extundelete /dev/vdb1
--inode 1048577
可以看到被删除的VERSION文件,inode号1048597
在系统盘文件系统路径下执行命令extundelete /dev/vdb1 --restore-inode 1048597恢复文件
命令执行完毕后,在当前路径下会生成RECOVERED_FILES目录,进入目录,可以看到以file.恢复文件inode号格式命名的文件,查看文件内容 .
与删除原文件前备份的文件进行对比,内容完全一致,文件恢复成功。
恢复被误删的目录,将云硬盘上/mnt/current目录删除
执行命令extundelete
/dev/vdb1 --inode 2,扫描云硬盘文件系统/dev/vddb1的根路径下所有文件和目录,可以看到current目录的信息
在系统盘文件系统路径下执行命令extundelete
/dev/vdb1 --restore-directory /current恢复目录
完成后可以看到在RECOVERED_FILES目录中生成了current目录,进入目录查看所有文件都被恢复了,内容与原文件对比一致。
感谢各位童鞋阅读,如果能够对大家有所帮助,欢迎点赞转发评论。
关注我们的公众号:云服务飞行团,更多内容持续放送!