在两个外部硬盘之间处理和传输约 600GB 数据的最快方法

在两个外部硬盘之间处理和传输约 600GB 数据的最快方法
sudo fdisk -l :

将给我以下输出。

Disk /dev/sdc: 4000.8 GB, 4000787029504 bytes
256 heads, 63 sectors/track, 484501 cylinders, total 7814037167 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
Disk identifier: 0x1ca6469a

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1  4294967295  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.

WARNING: GPT (GUID Partition Table) detected on '/dev/sdd'! The util fdisk doesn't support GPT. Use GNU Parted.

Note: sector size is 4096 (not 512)

Disk /dev/sdd: 3000.6 GB, 3000592977920 bytes
255 heads, 63 sectors/track, 45600 cylinders, total 732566645 sectors
Units = sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1       51205      204820   ee  GPT
/dev/sdd2           51206   732533871  2929930664    7  HPFS/NTFS/exFAT

我想将数据从挂载在 /dev/sdd2 上的设备传输到 /dev/sdc2,数据大约为 400 - 600GB。处理和传输此文件的最佳方法是什么。

我的目标磁盘不是空的,我需要每三天移动这么多的数据。

  1. 压缩和解压缩耗时太长
  2. 我还没有尝试过 rsync,希望得到你的评论
  3. 我为两个硬盘使用了 2 个 USB 3.0 端口。我应该不是将它们连接到集线器以提高速度?

还有其他有效的方法来传输这些文件吗?

答案1

最好的方法是直接复制 - 除非目标驱动器上已经有与源驱动器匹配的数据,并且文件名、大小和上次模式日期相同,否则您将浪费资源。使用压缩/解压缩更是如此,除非您正在压缩数据 - 并且源数据是可压缩的(并且假设读取速度比写入速度快)

您不想使用集线器,因为这将共享硬盘带宽。

您可以通过更改文件系统块大小来调整边缘 - 更大的块会更浪费,但速度会稍微快一些。(但速度不会大幅提升)

此外,根据文件大小,不同的文件系统可以为您提供更好的性能。

您的瓶颈很可能是磁盘速度和延迟,而不是其他任何因素。您无法做太多事情来解决这个问题,除了忍受目标磁盘是空白的 - 因为初始 - 最外层轨道 - 比末端 - 最内层轨道快得多。(我假设您对 sdc2 的引用应该是 sdc1。如果不是这种情况,您应该考虑 sdc 的布局,以便将数据尽可能靠近磁盘的开头。

答案2

如果您有两个等效的 USB 集线器,请将磁盘连接到不同的集线器,断开其他 USB 设备并进行直接复制。这将确保最大程度的并行性。

如果您只有一个集线器,则传输到中间内部磁盘,然后复制到另一个外部磁盘可能会更快,因为外部磁盘将成为瓶颈。

如果您的文件夹中有很多小文件,将它们压缩在一个 zip 存档中将大大提高传输速度。

当驱动器大小相同时,如果磁盘几乎已满,则驱动器到驱动器分区复制应该是最快的方式,但如果磁盘远未满,则速度会较慢。

如果目标驱动器为空,将分区簇大小从 4 增加到 16 将避免大量的开销 I/O 操作,但会花费一些额外的空间。

相关内容