使用“dd”将文件复制到整个设备(2TB HDD)后,我可以在那里“dd”更多文件而不丢失原始文件吗?

使用“dd”将文件复制到整个设备(2TB HDD)后,我可以在那里“dd”更多文件而不丢失原始文件吗?

仅使用外部硬盘 - 没有内部硬盘...

我有一个 2TB 的硬盘,已占用 0.25%;我使用以下命令将文件“dd”到其中:

"sudo dd if=/dev/sda bs=16M of=/dev/sdb"

(sda and sdb = 2 different hdd's)

I would like to 'dd' more files there from another hdd, to fill up the rest of the 2TB hdd. I do **NOT** want to add the files to the 2TB hdd as an image. 
**UPDATE:** 
sudo fdisk -l /dev/sda
Disk /dev/sda: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model:                 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
Disklabel type: gpt
Disk identifier: xxxxx

Device      Start       End   Sectors   Size Type
/dev/sda2  264192 976771071 976506880 465.7G Microsoft basic data

:~$ sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 3907029168 sectors, 1.8 TiB
Model:                 
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 3907029134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2930522221 sectors (1.4 TiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   2          264192       976771071   465.6 GiB   0700  Basic data partition

答案1

dd我可以在不丢失原始文件的情况下添加另一个分区和更多文件吗?

是的(尽管“dd更多文件”是一个奇怪的术语)。

我假设的输出gdisk -l /dev/sda sda是目标磁盘(那是sdb当您运行第一个时dd)。

您需要向分区表添加一个新条目(使用fdiskgdisk或其他任何替代方法);一个将从扇区开始的新分区976771072(或更高的数字,但我想您不想浪费空间)。现有分区的编号为2( sda2),新分区最自然的编号将是3( sda3)。

您的情况中添加分区的过程与添加分区的一般过程没有什么不同。通常,可能需要一些额外的步骤来处理“不幸”的问题(例如,克隆文件系统的 Btrfs 问题;或 512 与 4096 逻辑扇区大小),但这里似乎没有这样的问题。

以防万一,请确保您能够挂载/dev/sda2并读取文件。继续操作之前请先卸载(再次强调,以防万一)。

因此,创建一个新分区。我假设它将是/dev/sda3。一些程序可能会提示您在那里创建一个文件系统。我们可能需要或不需要明确创建文件系统;这取决于您接下来要做什么,我的回答无论如何都会涵盖这一点。最好提前分配一个与您想要在分区中放置/创建的文件系统相对应的类型/代码/UUID。

然后有两种不同的方式,一种是使用dd,一种是使用文件(这就是为什么我说“dd更多文件”是一个“奇怪的术语”):

  • 你可以使用以下命令将一些旧分区复制到新分区dd。命令如下

    dd if=/dev/sdX1 of=/dev/sda3 bs=16M
    

    笔记:

    • /dev/sdX1不应以写访问权限安装;/dev/sda3根本不应该安装。
    • /dev/sda3必须至少与内部文件系统一样大/dev/sdX1(因此您需要在创建时提前规划/dev/sda3)。实际上,文件系统几乎从不小于其分区,因此我们可以改写为“/dev/sda3必须至少与 一样大/dev/sdX1”。这与 的已用空间无关df;文件系统可能只占用 1%,但它仍占用整个分区。
    • 我使用了/dev/sdX1,而不是/dev/sdX。您想将分区复制到分区。例外情况是如果/dev/sdX是超级软盘(整个设备上的文件系统,没有分区表;罕见)。
    • 您可以/dev/sdX1使用some_regular_file您想要放入新分区的文件系统的映像。“文件系统的映像”,即(基本上)“分区的映像”,而不是“带有 MBR、分区表等的整个设备的映像”。
    • 在这种情况下,dd对文件系统中正在复制的文件不执行任何操作。
  • 或者您可以创建一个新的文件系统并只复制文件。使用mkfs(或mkfs.whatever) 在里面创建所需类型的文件系统/dev/sda3(除非分区工具已经完成并且您对结果满意)。然后挂载源和目标文件系统以及cprsyncmc、无论什么)文件。

    笔记:

    • 新的文件系统/dev/sda3必须足够大才能容纳文件(因此您需要在创建时提前计划/dev/sda3)。与上述方法(使用)相比,dd您不受源文件系统大小的限制,而是受文件总大小的限制。请记住,元数据也占用空间,并且总会有一些开销。
    • dd在这里没什么用。是的,从技术上讲,你可以用它来复制一个文件,但这不是你想要做的。你想要cp -r或等价的。

一般来说,在类似情况下,/dev/sda3可以扩大而不是创建一个/dev/sda2。因为您明确询问“添加另一个分区”,所以我明白“添加”就是您想要的。

答案2

要将文件添加到外部硬盘已经 文件,我使用了以下命令:

sudo dd if=/dev/sdx# bs=16M of=/dev/sdy#

首先,我使用 gparted 为要复制文件的硬盘创建第二个分区,以便不是覆盖第一个分区上已有的文件。

然后,简单地说,我只需在 dd 命令中为“if”和“of”包含分区号。

第2个分区对应于上面dd命令中“sdy#”中的“#”。

“sdx#”中的分区“#”对应于主机文件硬盘的分区。

相关内容