我希望跨2L的HP-UX服务器传输数据。 我有几个这样的转移,其中一些大部分是二进制(Oracle表空间…),另一些是更多的文本文件(日志…)。 使用的卷的数据大小介于100Gb和1Tb之间。 另外,我将在一些分区上将块大小从1K改为8K …
我在找的东西:
现在,我已经想到了dd,cp和rsync,但是我不确定最好的使用方法和使用它们的最佳方式。
你不想用dd。 这是为了处理1个文件或stream,而不是整个文件系统。
rsync的devise是为了做你想做的事情,但是正如之前的海报所说的那样,正如我的testing所显示的那样,这不是最快的。 这是因为这样做是这样的:“好的,我正在看文件A.目标上是文件A吗?如果是这样,它是更新,更旧,相同吗? 等rsync有点复杂,因为它意味着不止一次运行…就像名称所说,它是为了同步两个位置。
为了做你想做的事情,我发现了一个快速,简单,可靠的tar拷贝。 焦油知道硬链接。 焦油知道设备。 Tar可以处理你在文件系统中遇到的几乎所有的情况(除了很长的path,如果你不使用Gnu tar,你可能需要小心,把/放在path名的开头)。
无论如何,过去20年来,我的成功率达到了99.98%
cd / my / source; tar cf – 子目录| (cd / destination / path; tar xf – )
…您要复制的子目录将显示在/目标/path中。
如果你喜欢看你的进度,你可以在string的后半部分使用“xvf”而不是“xf”。
我的0.02%失败来自真正长的文件path… 🙁
焦油不会保证文件的完整性。 也就是说,只要你没有看到任何错误信息,我发现它是非常可靠的。 它将保持适当的权限和所有权。
看看这个post 。 一些答案build议使用tar
。 其他人build议使用rsync
。 他们正在考虑在两台机器之间复制数据。 你的问题是类似的,但你需要在本地复制文件,而不是通过networking。
我build议使用rsync
,因为它具有专门解决大部分问题的function。 如果您使用适当的选项(例如-a
选项),则将保留所有文件所有权,权限和时间。 此外, rsync
自动使用校验和来确保所有传输的文件完好无损地到达目的地,因此数据完整性得以保证(假设成功运行)。
rsync
可能不是最佳的唯一的一点是速度,尤其是与cp
这样的轻量级select相比,但是我怀疑你会注意到很多不同,除非你的处理能力很低。
你基本上有三个select:
select三个选项中的一个取决于您必须备份的内容以及您想要的结果。 对于您的具体情况,我认为选项n.1(块设备副本)加上ddrescue是要走的路。 无论如何,让我们看看可用选项的集合。
情况1:分区复制
PRO:复制一个完整的块设备,你可以肯定的是注意到被遗忘了。
CON:打扰块设备比使用文件不方便,select错误的块设备或选项可能会破坏您的数据。
如果你想有一个整个块开发的二进制副本,你必须使用DD或类似的工具。 其他非常有用的工具是dcfldd (一个哈希就绪的dd叉)和ddrescue (一个更高级的dd-like工具)。
情况2:文件系统转储
PRO:复制整个文件系统,你确定里面的所有数据和元数据都被备份了。
CON:如果有多个文件系统要备份,则必须执行多个传递(一个用于文件系统)
处理文件系统的有用工具是FSArchive 。 而且,许多文件系统都集成了一些高效转储内容的工具(例如:XFS有xfsdump,Ext2 / 3/4使用了dumpe2fs等等)。
情况3:复制文件系统内的数据
PRO:从文件系统内复制数据,你可以非常明确地select要备份的内容。 这确保了快速的备份/恢复时间和小的备份映像。
CON:你必须完全知道要备份什么,以及如何备份。 应该对重要的元数据(例如:所有者,许可,ACL,EA等)
Rsync是你最好的朋友。 Rsnapshot和rdiff-backup是build立在rsync / librsync之上的奇妙工具。 Tar是任何Unix系统pipe理员的瑞士刀。