复制深层嵌套的目录结构

复制深层嵌套的目录结构

作为应用程序迁移的一部分,我必须将目录结构复制到新主机。目录结构如下:

{10 - ff} / {00 - ff} / {00 - ff}(不包含)/唯一文件名

所以有数百万个文件。树的第三层尚未完全填充,并且并非每个第三层目录中都有一个文件。

即使是二级文件夹,du 也需要很长时间才能完成。使用 tar | nc需要10天。我可以停电 1 天,但不能停电 10 天。

答案1

用于rsync此。

  1. 在必须切换到使用新服务器之前,请执行rsync从一台主机到另一台主机的整个目录的操作。听上去,这需要很长时间才能完成。
  2. 完成后,rsync再次运行以捕获第一次 rsync 期间修改的所有文件。
  3. 继续定期rsync运行,直到您想要执行转换为止。这只是为了保持需要传输的数据量较低。
  4. 发生中断并停止对旧服务器的所有写入。
  5. 最后执行一次rsync
  6. 在新服务器上启动服务

答案2

如果此目录结构是其设备/分区上的大部分数据,请忽略该目录结构(如果这是导致问题的原因)。

相反,卸载设备(或以只读方式重新安装)并使用dd(1)netcat 将文件系统块复制到新主机上相同大小的分区。

如果您想要的层次结构之外存在无关数据,请在迁移后将其删除。

如果主机之间的网络可能成为瓶颈,您还可以考虑拉出驱动器并将其插入新主机。

答案3

对于一次性副本,如果您可以将源和目标安装在同一系统上,则可以执行以下操作:

find [source top dir] | cpio -dump [target mountpoint]

它将复制并保留文件属性。 cpio工具中也应该有压缩参数。

相关内容