Debian 8.9恢复已删除但已锁定的文件

七人制

我不小心跑了rm -R / home /。我的Homefolder包含此时正在使用的多个虚拟机磁盘。我也收到错误消息,指出某些文件无法删除。但是,我无法再访问/ home /文件夹中的文件。

寻找我发现的解决方案,我可以尝试使用cp / proc / PID / fd / 12 / target /还原文件。

现在,我有点困惑-由于虚拟机仍在工作,它可能会写入要恢复的磁盘。

这些磁盘中会有不一致的地方吗?还是您可能还有其他提示?

我感谢各种帮助!

非常感谢你!

AB

给定文件系统上的文件由其索引节点aka inode引用只要有对该inode的引用,它就可以在磁盘上(作为文件名链接,可以多次存在)或“在内存中”(打开文件描述符aka fd,挂载点,mmaped ...)它的数据保留在磁盘上。如果没有更多参考,则将其真正删除并回收空间。当磁盘引用变为0时,即使仍然有“内存中”引用,也无法用新名称重新链接它,因为用户没有内核API,例如,允许链接由其fd或ind引用的inode。 inode的值本身,它是唯一可用的文件名(除非使用适当的文件系统的黑暗和危险的魔法debugfs ln)。

Linux内核仍然提供了一些使用/proc伪文件系统访问此文件的功能每个打开的文件都显示为指向文件的符号链接。该文件的名称是化妆品信息(以及可能是错的当文件是未链接),但文件本身是被视为实际的文件,由内核所看到。/proc/PID/fd/

因此,在这种情况下,只要VM正在运行,用作VM磁盘后端的文件仍然存在,但无法在磁盘上重新链接。可以轻松完成的操作是使用适当的命令将其复制,例如:

cp --sparse=always /proc/PID/fd/12 > backup

因为VM正在运行,所以这样做可能会导致不一致的结果:文件系统(文件内部)在复制过程中可能会更改,并且可能变得不一致和损坏。因此,要么冻结虚拟机的虚拟机管理程序(如果虚拟机管理程序允许)并且在冻结时不关闭虚拟机的磁盘文件,要么向该无名文件添加新引用,然后停止虚拟机。如果您不想碰碰运气,请在冻结之前添加参考。任何读取文件且持续时间足够长的命令都可以。例如:

$ sleep 99999 < /proc/PID/fd/12 &
[1] 12087

现在,您应该验证/proc/12087/fd/0引用了同一... (deleted)文件。

现在可以冻结甚至停止虚拟机(但之后将无法再次启动)。由于文件系统上没有更多活动,因此备份应保持一致(如果只是冻结,则与文件系统日志恢复有关)。如果VM的磁盘文件是“惰性”配置的并且通常是空的,以使用较少的空间,则使用cpwith选项--sparse=always似乎是一个不错的选择。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从Debian的软件包中恢复已删除文件的最佳方法是什么?

来自分类Dev

Debian 8恢复声卡驱动程序

来自分类Dev

恢复Windows 8和Linux(Debian)/ boot / efi

来自分类Dev

Debian Stretch 9中的OpenJDK 8支持期

来自分类Dev

在 Debian 8->9 升级期间损坏的 python

来自分类Dev

Debian 8 UEFI支持

来自分类Dev

恢复已删除的文件

来自分类Dev

升级到没有Jessie反向移植的Debian9 / Stretch Debian 8后,rsyslogd中出现错误

来自分类Dev

systemd apt固定为-1并从Debian 8升级到Debian 9时安装

来自分类Dev

Debian 8 Jessie UEFI安装

来自分类Dev

在Debian 8中设置LIRC

来自分类Dev

字体不显示-Debian 8

来自分类Dev

Debian 8上的VirtualHost问题

来自分类Dev

在Debian上安装JDK 8

来自分类Dev

在Debian 8上安装Docker

来自分类Dev

无法登录 Debian 8 帐户

来自分类Dev

Debian 8 上的 PostrgeSQL + Django

来自分类Dev

Debian-恢复时区文件

来自分类Dev

Debian:获取已安装文件的软件包名称

来自分类Dev

迁移debian 8后sssd / ad no ssh登录=> 9:用户xxx的访问被拒绝:4(系统错误)

来自分类Dev

Debian 9:从8升级后,MySQL(MariaDB)不再起作用

来自分类Dev

如何设置debian 9/10和腻子以显示utf-8字符?

来自分类Dev

是否可以从Ubuntu MATE 18.04 LTS删除Debian 8 GRUB背景?

来自分类Dev

是否可以从 Ubuntu MATE 18.04 LTS 中删除 Debian 8 GRUB 背景?

来自分类Dev

在Debian 8 Jessie安装中的哪里可以找到Network Manager VPN连接文件?

来自分类Dev

mdadm:未找到conf文件中列出的设备-使用GPT的Debian 8

来自分类Dev

从Java项目中恢复已删除/已删除的.class文件

来自分类Dev

从 Linux 命令行运行 java.class 文件 - 已安装 Oracle JDK8 - 已删除 openJDK

来自分类Dev

已安装Openbox的Debian发行版

Related 相关文章

热门标签

归档