如何使用 dd 命令将文件添加到加密硬盘而不丢失加密?

如何使用 dd 命令将文件添加到加密硬盘而不丢失加密?

目的:将 DD 文件从另一个未加密的硬盘复制到 LUKS 加密(空白)硬盘。

我相信以下情况属实:如果我将文件从未加密的硬盘复制到(空白)加密的硬盘,那么新的未加密文件(在收件人硬盘上)将删除加密。

我尝试在加密硬盘后创建分区,但无法做到(使用 gparted);似乎一旦硬盘被加密,无论我在 gparted 中是否打开加密,都无法进行。

我试图看看我是否可以加密底层硬盘,然后将未加密的文件放入分区。这只是一个想法……

“sudo dd if=/dev/sdx1 bs=16M of=/dev/sdy2”

我不知道如何将文件(来自非加密)复制到加密硬盘而不丢失那里的加密,或者将文件复制到非加密硬盘,然后加密这些文件。

更新:

Encrypted/destination hdd was encrypted w/ LUKS the following way:
> "sudo cryptsetup luksFormat /dev/sdx 
> "sudo cryptsetup luksOpen /dev/sdx diskname"
> "sudo mkfs.ext4 /dev/mapper/diskname"
> "sudo cryptsetup luksClose diskname"

更新

我安装了“if”和“of”设备并运行以下命令:

"sudo dd if=/dev/sdx1 bs=16M of=/dev/mapper/diskname"

非加密设备中的文件已传输。我关闭了加密设备并关闭了设备。然后我重新打开设备并打开加密驱动器。驱动器仍处于加密状态。

Now I am trying the same thing but NOT mounting either of the devices... will update soon...

更新:使用相同的“dd”命令,主机文件/设备为 16GB,目标未安装,主机文件已复制到目标一个多小时,但仍未完成。主机文件似乎将遍历目标硬盘的每一位,而当目标安装后,它在大约 20 分钟内完成了相同的分配任务。

答案1

不清楚你为什么选择 DD 而不是直接复制文件,但你认为使用 dd 会丢失加密的想法是错误的。以下是原因和方法 -

Linux 文件系统/磁盘按层工作 - 常见的层包括(从下往上,尽管某些项目的顺序可以改变,并且此列表绝不是唯一的)

RAW DISK
Partitions
RAID
Logical Volumes (Physical Volumes, Volume Groups, Logical Volumes)
Encryption
Filesystem

(其他层包括 FUSE、DRBD、Loopback 文件系统/文件(充当分区)、ZFS 位 NFS 挂载等等)

当您将信息写入已安装的分区时,它实际上会通过所有抽象将其写入回去。因此,当您将文件写入文件系统时,它是未加密的,但它会经过加密层,然后最终到达磁盘。重点是加密是文件系统不需要知道的较低级别。

再强调一下,发行版通常会处理这个问题,但让我们举一个简单的例子。假设我有一个分区,我想手动使加密磁盘可用(假设有分区 /dev/sda3)- 它需要以下命令 -

  1. cryptsetup /dev/sda3 加密磁盘
  2. 挂载 /dev/mapper/encrypteddisk /data

因此,当我将文件写入 /data 时,它会写入 /dev/mapper/encrypteddisk 上的某个点 - 它不是一个真正的块设备,而是一个抽象的块设备,它使用 /dev/sda3 作为其后备 - 但是内核(即内核或内核调用的 dm_crypt 模块)正在处理抽象。写入 /dev/sda3 的数据实际上是加密的。重要的是,数据如何写入并不重要 - 只要它写入或通过 /dev/mapper/encrypteddisk,它将在底层磁盘上加密。

如果您有新磁盘,您可以相当轻松地验证这一点。将数据(最好是纯文本)写入加密磁盘,然后使用类似 strings /dev/sda3 的命令,您将看到与您写入的文本毫无相似之处的随机字符串。(您可以使用类似以下命令将任意文本添加到文件中

  echo "Hello World - This is arbitrary Text" | dd of /del.file  

相关内容