【发布时间】:2023-03-08 08:46:01
【问题描述】:
我正在更换托管服务提供商,需要将数百万个上传的文件传输到新服务器。所有文件都在同一个目录中。是的。你没看错。 ;)
过去我是这样做的:
- 压缩源服务器中的所有文件
-
scp新服务器的压缩包 - 解压
- 将目录移动到适当的位置
- 无论出于何种原因,我在第 1 步中的拉链总是将路径与它们一起并要求我进行 mv。
我上次这样做大约需要 4-5 天才能完成,这大约是我现在的 60%。
我希望有更好的方法。你有什么建议?
文件结构是散列的。像这样:AAAAAAAAAA.jpg - ZZZZZZZZZZ.txt
这是我们正在折腾的一个想法:
根据 3 个字母前缀将拉链分成大量迷你拉链。比如:
AAAAAAAAAA.jpg - AAAZZZZZZZ.gif => AAA.zip
理论优点:
- 可以加快传输速度,允许同时传输多个 zip 文件
- 可以限制因传输失败而损失的时间。 (等待 2 天转移最终失败是很糟糕的)
理论缺点:
- 可能会大大减慢初始 zip,因为 zip 必须通过通配符 (
AAA*) 查找文件,这可能会通过同时运行多个 zip 线程来抵消,使用所有 CPU 而不是只使用一个。 - 复杂性?
我们也考虑过 rsync 和 scp,但担心手动传输每个文件的费用。而且由于远程服务器是空的,我不需要担心已经存在的东西。
你怎么看?你会怎么做?
(是的,我最终会将这些移动到 Amazon S3,我将只运送它们一个磁盘,但与此同时,我昨天需要它们!)
【问题讨论】:
-
在这种情况下,我主要关心的是不要重复传输而不是快速传输。我曾经不得不从相隔 7 个海域的位置传输价值 100GB 的文件。我尝试使用大文件并由于一些随机错误而上传失败,不得不再次完成整个操作。所以我所做的是将文件分成 6gb 的块并一次并行发送(3-4 个)。它更快更可靠。您可以创建一个脚本来自动为您执行此操作。