昨天我犯了一个严重的错误,sudo rm -r *
在我的主目录中运行了它(它运行了大概 10 秒钟,然后我才意识到出了问题并停止了它)。我昨晚发了帖子,但仍然遇到问题。
问题之一是我不确切知道什么被删除了,什么没有被删除(如果有这个日志,那就太棒了)并且我没有备份我的系统。我正在 Dell XPS 15 9570 上运行带有 LUKS 加密的 archlinux 发行版,我使用该发行版安装了该发行版这些指令并具有 DWM、DWMBLOCKS、ST、alacritty、zsh、neovim、SXHKD、emacs 的特定配置,可能还有我忘记的东西。
我曾尝试在网上寻找最佳解决方案,但发现了不同的建议,我认为我需要比昨天在这里收到的更明确的指示。根据我昨天读到的内容和别人告诉我的,我需要做的是......
- 创建当前文件系统的副本,并尝试备份系统上仍然存在或可恢复的任何配置和文件
- 创建过去两天已删除数据的转储,并尝试从那里恢复任何重要文件
- 这次从头开始重新安装系统并备份所有内容
删除后,我惊慌失措地四处查看损坏的内容,而不是立即关闭计算机。我运行sudo pacman -SYYU
,打开 emacs 看看它是否正常工作,重新安装了 anaconda,因为 emacs 说由于从该目录中删除数据而出现版本错误,并且我还重新安装了 emacs 所需的程序的缓存版本。
从论坛获得建议后,我只通过实时 USB 启动系统。我首先尝试使用 slax 进行操作,但无法下载并制作 extundelete,因此我通过制作 kali-linux 实时可启动 USB 进行重试。另一个问题是,当我以为我已经创建了可实时启动的 kali-linux USB 时,我却意外地创建了一个 USB 安装程序,并通过安装程序进行了设置系统语言的操作。我中止了安装并正确格式化了我的闪存驱动器,但我不确定这是否会发生重大变化。在我正确格式化 live USB 后,我运行了 photorec 两次(因为我不知道如何让 extundelete 正常工作),一次简短地检查了所有文件格式,然后另一次提取创建的所有 PDF 和文本文件我将其存储在 128Gb SD 卡上。我没有从这个方法中找到任何点文件。我弄清楚了如何正确构建 extundelete (和 ext4magic),并在过去 2 天尝试运行命令来存储数据,但我不断遇到分段错误。我也查看了测试平台,但没有出现数据恢复的选项。所有这一切中的另一个问题是,使用 kali linux GUI 我卸载了最大的分区,但我不确定这是否是要卸载的正确分区。我研究了grep
如何从未分配的内存中重建文件,恐怕我正在以覆盖数据的方式卸载并创建临时目录。我还必须多次关闭并重新启动计算机(总是从 live-usb 启动),所以我不确定这会如何影响事情......
最后,在我真正知道自己在做什么之前,我遇到了这篇博文,然后我运行sudo uname -a
,sudo fdisk -l
,并sudo blkid
得到以下输出......
$ sudo uname -a
Linux <redacted> 6. 1.8-arch1-1 #1 SMP PREEMPT_DYNAMIC Tue , 24 Jan 2023 21:07:04 +0000 x86_64 GNU/LinUx
$ sudo fdisk -
Disk /dev/nvmeen1: 238.47 618, 256860514384 bytes, 590118192 sectors
Disk model: KXG50ZNV256G NVMe TOSHIBA 2566B
Units: sectors of 1 * 512 - 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/0 size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk 1dentifier: <redacted>
Device
start
End
size Type
Sectors
2848
/dev/nvmeonip1
10586231848576 5 12N EFI System
/dev/nvmeen1p2 1050624 2099199
1848576 512M Linux filesystem
/dev/nvmebnip3 2999289 598117503 498818384 237.56 Linux filesystem
Disk /dev/mapper/volumegroup: 237.46 618, 254968594432 bytes, 497989536 sectors
Units: sectors of 1 512 - 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/0 size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/volumegroup-root: 58 618, 53687891280 bytes, 184857689 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/0 size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/volumegroup-home: 187.46 618, 281288454656 bytes, 393125888 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/0 size (minimum/optimal): 512 bytes / 512 bytes
$ sudo blkid
/dev/mapper/volumegroup-root: UUID="<redacted>" BLOCK_SIZE="4896" TYPE="ext4"
/dev/nvme@nip3: UUID="<redacted>" TYPE="crypto_LUKS" PARTUUID="<redacted>"
/dev/nvme@n1p1: UUID="<redacted>" BLOCK_SIZE="512" TYPE-"vfat" PARTUUID="<redacted>"
/dev/nvme@n1p2: UUID="<redacted>" BLOCK_SIZE="4096" TYPE-"ext4" PARTUUID="<redacted>"
/dev/mapper/volumegroup-home: UUID="<redacted>" BLOCK_SIZE-"4896"
同样,任何针对新人的明确说明的帮助将不胜感激。谢谢。
答案1
- 您应该尽早停止写入此文件系统。在您确定已完成抢救之前,切勿写入内容。您可以将文件系统的转储存储在任何地方并无限期地重试。
- 使用扩展删除对于 ext3/4,或者可能还有其他类似的用于其他文件系统的实用程序。它需要一个已卸载的文件系统,因此请使用该实用程序为自己制作一些 LiveCD 或 LiveUSB。松弛(基于 Debian 的)允许您在运行时轻松安装该实用程序。该实用程序也不允许将恢复的数据存储在它恢复的同一文件系统上,它无法就地恢复删除,因此您需要一些额外的存储空间来复制可挽救的数据。
- 保存您想要的任何内容或存储转储后,您可以继续。如果你真的只是擦除了自己的数据
$HOME
,并没有动过它之外的文件,那么你不需要重装系统。只需从 $HOME 中删除(备份某处,仅用于以防万一)所有剩余文件(包括隐藏文件)并“从头开始”登录。然后您可以将恢复的数据复制到其中。
我提到了转储;一种策略是卸载 /home,制作转储甚至块级快照(如果在 LVM 上),将实用程序安装到正在运行的系统中,修复 emacs 和您想要修复的任何内容,然后使用该实用程序从转储或快照。只要确保你不会用完快照在这种情况下的空间。
不要依赖文件系统级别的快照,例如,如果是 ZFS,则该级别的快照将无法帮助您进行抢救!