我给自己买了一个新硬盘并安装了最新版本的 Linux Mint。现在我想从旧磁盘传输文件(我最近没有备份),但有几个问题
- 我的新内部系统和外部驱动器的LVM 名称发生冲突(Linux Mint 使用
mint-vg
该名称) - 磁盘本身已加密
- 我的
/home
也被加密了 - 新驱动器也已加密
我怎样才能恢复我的数据?
答案1
安装驱动器
(我对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-root
和mint--vg-swap_1
的内容exthdd
。
处理 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
就我而言,我能够通过查找硬盘驱动器的大小来解决差异,当然您可以在安装外部驱动器之前检查当前 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]
然而,如果你丢失了这个密码,你就没有希望了。
您现在可以转到/tmp/ecryptfs.ABCXYZ
并查看主目录的内容。
卸载
以相反的顺序卸载所有内容。