挂载具有冲突 LVM 名称的加密外部设备

bas*_*h.d 4 lvm data-recovery linux-mint luks disk-encryption

我给自己买了一个新硬盘并安装了最新版本的 Linux Mint。现在我想从旧磁盘传输文件(我最近没有备份)但是有几个问题

  • LVM 的名称mint-vg与我的新内部系统和外部驱动器的名称冲突(Linux Mint 使用该名称)
  • 磁盘本身是加密的
  • 我的/home也是加密的
  • 新驱动器也被加密

如何恢复我的数据?

bas*_*h.d 6

安装驱动器

(我使用 SATA 驱动器的 USB 外壳,您也可以将驱动器安装在您的 PC 中)

在安装 Mint 时加密磁盘时,驱动器将包含分区方案(使用fdisk -l /dev/sdb),例如

/dev/sdb1 -> Bootable, about 500M in size, Id 83, Type "Linux" /dev/sdb2 -> Not-bootable, rest of your disk's capacity, Id 5, Type "Extended" /dev/sdb5 -> Not-bootable, rest of your disk's capacity, Id 83, Type "Extended"

找到分区后尝试使用挂载

sudo cryptsetup luksOpen /dev/sdb5 exthdd

whereexthdd实际上可以是任何东西,但它不能存在于 下dev/mapper,所以你可以先检查一下。

系统会要求您输入分区的密码,因此请准备好。如果你失去了这个,对你没有帮助......

运行lsblk再次,你应该会看到mint--vg-rootmint--vg-swap_1exthdd

处理冲突的 LVM 名称

当设备通过 解锁时cryptsetup luksOpen,运行

sudo lvscan

这将向您展示类似的东西

inactive '/dev/mint-vg/root' [UVW GiB] inherit inactive '/dev/mint-vg/swap_1' [XYZ GiB] inherit ACTIVE '/dev/mint-vg/root' [ABC GiB] inherit ACTIVE '/dev/mint-vg/swap_1' [DEF GiB] inherit

正如您所看到的,您mint-vg/dev目录下有两次,这使您只能访问其中之一(在我的情况下,它指向外部硬盘驱动器)。

幸运的是,底层卷组通过 ID (VG UUID) 区分。我们可以检索这些运行的 ID

sudo vgdisplay

这将向您显示类似的内容(输出缩写):

--- Volume group ---
 VG Name        mint-vg
 ...
 VG Size        UVW GiB
 ...
 VG UUID        UVW-ID

 --- Volume group ---
 VG Name        mint-vg
 ...
 VG Size        ABC GiB
 ...
 VG UUID        ABC-ID
Run Code Online (Sandbox Code Playgroud)

就我而言,我能够通过查找硬盘驱动器的大小来解决差异,当然您可以在安装外部驱动器之前检查当前 VG 的 ID。

现在我们有了 ID (UVW-ID),我们可以使用以下命令重命名 VG

sudo vgrename UVW-ID newvgname

你应该得到一个

Volume group "NAME-OF-UVW" successfully renamed to newvgname

检查lsblk应该会在sdb5,newvgname-swap_1和下显示两个条目newvgname-root

解密和挂载你的主目录

如果你/dev/mapper现在检查,你会发现两个新节点

/dev/mapper/newvgname-root /dev/mapper/newvgname-swap_1

sudo mount /dev/mapper/newvgname-root /your/mount/point

并检查结果

ls /your/mount/point - 瞧,您现在应该可以访问该设备了。

现在转到/home目录并查找隐藏目录.ecryptfs。在里面你应该找到一个目录user-user你正在寻找的用户名在哪里。

现在运行

sudo ecryptfs-recover-private /your/mount/point/home/.ecryptfs/user/.Private/

系统将提示您输入以下帐户的密码user

INFO: Found [/your/mount/point/.ecryptfs/user/.Private/].
Try to recover this directory? [Y/n]: Y
INFO: Found your wrapped-passphrase
Do you know your LOGIN passphrase? [Y/n] Y
INFO: Enter your LOGIN passphrase...
Passphrase: _
Inserted auth tok with sig [...] into the user session keyring
INFO: Success! Private data mounted at [/tmp/ecryptfs.ABCXYZ]
Run Code Online (Sandbox Code Playgroud)

然而,如果您丢失了这个密码,您就几乎没有希望了。

您现在可以转到/tmp/ecryptfs.ABCXYZ并查看主目录的内容。

卸载

以相反的顺序卸载所有内容。