仅使用外部硬盘 - 没有内部硬盘...
我有一个 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
)。
您需要向分区表添加一个新条目(使用fdisk
,gdisk
或其他任何替代方法);一个将从扇区开始的新分区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
(除非分区工具已经完成并且您对结果满意)。然后挂载源和目标文件系统以及cp
(rsync
、mc
、无论什么)文件。笔记:
- 新的文件系统
/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#”中的分区“#”对应于主机文件硬盘的分区。