作为应用程序迁移的一部分,我必须将目录结构复制到新主机。目录结构如下:
{10 - ff} / {00 - ff} / {00 - ff}(不包含)/唯一文件名
所以有数百万个文件。树的第三层尚未完全填充,并且并非每个第三层目录中都有一个文件。
即使是二级文件夹,du 也需要很长时间才能完成。使用 tar | nc需要10天。我可以停电 1 天,但不能停电 10 天。
答案1
用于rsync
此。
- 在必须切换到使用新服务器之前,请执行
rsync
从一台主机到另一台主机的整个目录的操作。听上去,这需要很长时间才能完成。 - 完成后,
rsync
再次运行以捕获第一次 rsync 期间修改的所有文件。 - 继续定期
rsync
运行,直到您想要执行转换为止。这只是为了保持需要传输的数据量较低。 - 发生中断并停止对旧服务器的所有写入。
- 最后执行一次
rsync
- 在新服务器上启动服务
答案2
如果此目录结构是其设备/分区上的大部分数据,请忽略该目录结构(如果这是导致问题的原因)。
相反,卸载设备(或以只读方式重新安装)并使用dd(1)
netcat 将文件系统块复制到新主机上相同大小的分区。
如果您想要的层次结构之外存在无关数据,请在迁移后将其删除。
如果主机之间的网络可能成为瓶颈,您还可以考虑拉出驱动器并将其插入新主机。
答案3
对于一次性副本,如果您可以将源和目标安装在同一系统上,则可以执行以下操作:
find [source top dir] | cpio -dump [target mountpoint]
它将复制并保留文件属性。 cpio工具中也应该有压缩参数。