在分区之间复制大量数据的最佳方法

ski*_*inp 6 partition copy cp dd hp-ux

我希望在 HP-UX 服务器的 2 lv 之间传输数据。我有几个这样的传输要做,其中一些主要是二进制的(Oracle 表空间...),而另一些则是更多的文本文件(日志...)。卷的已用数据大小介于 100Gb 和 1Tb 之间。此外,我将在其中一些分区上将块大小从 1K 更改为 8K...

我正在寻找的东西:

  • 保证数据完整性
  • 最快的数据传输速度
  • 保留文件所有权和权限

现在,我已经考虑过 dd、cp 和 rsync,但我不确定使用它们的最佳方法以及使用它们的最佳方法......

Mik*_*e S 5

您不想使用 dd。那是为了处理 1 个文件或流,而不是在整个文件系统上。

rsync 旨在做你想做的事,但正如之前的海报所说,正如我的测试所示,它不是最快的。那是因为它是为了做这样的事情:“好的,我正在查看文件 A。文件 A 是否在目的地?如果是,它是更新的、旧的还是相同的?” 等等。 rsync 有点复杂,因为它意味着要运行不止一次......正如名字所说,它用于同步两个位置。

为了做您想做的事情,我发现 tar 副本快速、简单且可靠。Tar 知道硬链接。Tar 了解设备。Tar 可以处理您在文件系统中遇到的几乎所有情况(除了非常长的路径,而且,如果您不使用 Gnu tar,您可能需要小心将 / 放在路径名的开头)。

无论如何,在过去的 20 年里,我通过这样做取得了 99.98% 的成功:

cd /我的/源;tar cf - 子目录 | (cd /destination/path; tar xf -)

...您要复制的子目录将显示在 /destination/path 中。

如果您想查看您的进度,您可以在该字符串的后半部分使用“xvf”而不是“xf”。

...我 0.02% 的失败来自非常长的文件路径... :-(

Tar 不保证文件完整性。也就是说,只要您没有看到任何错误消息,我就发现它非常可靠。它将正确保留权限和所有权。


Kha*_*led 2

看看这个帖子。一些答案建议使用tar. 其他人建议使用rsync. 他们正在考虑在两台机器之间复制数据。您的问题类似,但您需要在本地复制文件,而不是通过网络进行复制。