最佳实践:迁移电子邮箱(maildir 格式)

最佳实践:迁移电子邮箱(maildir 格式)

情况是这样的。

我有大约 20,000 个 maildir 电子邮件帐户,占用了我们电子邮件服务器上数百 GB 的空间。Maildir 本质上保存了数千个微小的文件,而不是一个 .mbox 文件或类似的文件……

因此,出于空间和生命周期的原因,我需要将这数百万个文件从一台服务器迁移到另一台服务器。

我使用的传统方法都可以正常工作。rsync 是我立即想到的选项,但是我想看看是否还有其他“更好”的选项。

在这种情况下,Rsync 不处理多线程传输,这很糟糕,因为它实际上从未加速并使我的网络连接饱和,因此从一台服务器到另一台服务器的传输将花费数小时,而实际上不应该超过一两个小时。

我知道这是非常主观和主观的,因此将被标记为社区维基。

答案1

考虑像这样的 tar 管道:

tar cf - . | ssh remote "cd /backup; tar xf -"

我也会查看 bbcp。我知道关于 bbcp 的页面很长而且很混乱,但请花点时间阅读它,因为我觉得这可能是这里最好的解决方案。

http://www.slac.stanford.edu/~abh/bbcp/

我已经在各种网络上完成了 bbcp 传输,发现使用正确的线程设置通常可以使任何网络饱和。

仔细考虑你使用的文件系统,因为 ext3 对于大量小文件来说可能效率很低。我会使用 XFS。

答案2

根据您的服务需求,您可能还需要考虑使用 nginx 的 IMAP 代理和 imapsync 的组合。

动态代理 IMAP 请求(使用身份验证查找来确定用户应连接到哪个后端服务器)。使用 imapsync 遍历您的用户列表。一旦用户迁移到新服务器,锁定帐户,运行最终同步,并在某处更新记录,以便身份验证查找返回新服务器。

这样,最终用户就不会看到任何中断。

imapsync 在增量同步方面也相当巧妙。

我这样做是为了将用户从 Courier 迁移到 Cyrus,并在邮件存储后端之间进行迁移。

相关内容