当尝试创建 zimbra 开源版本 8.0.1+ 的备份时,我遇到了 data.mdb“爆炸”的问题。
虽然我的 /opt/zimbra 目录只有大约 8GB,但我的备份大约有 80GB。
rsync 和 copy 都无法正常工作。
答案1
data.mdb 文件实际上是一个精简配置的 86GB(默认情况下)文件。
在复制到备份目录时,Rsync 和有时 cp 命令会将文件“爆炸”到其完整大小。
如果您想创建异地备份或资源有限,这显然没有帮助。
这种行为似乎是 8.0.1 中的新行为
防止这种情况发生的正确方法是将备份分成 3 个部分。下面是我的示例备份脚本(以 root 身份执行)。
首先阻止 Zimbra 并杀死剩下的一切。
#!/bin/bash
# Zimbra Backup Script
echo 'Starting Zimbra backup script'
date
echo 'Stopping Zimbra'
su zimbra -c '/opt/zimbra/bin/zmcontrol stop'
echo 'Kill Zimbra'
ps auxww | grep zimbra
接下来备份 /opt/zimbra 目录,不包括 /opt/zimbra/data/ldap 目录。
echo 'Saving base'
rsync -aHK --delete --exclude '*data/ldap*' /opt/zimbra/ /backup/zimbra-base
接下来,使用内置的 zmslapcat 命令将 ldap 文件转换为 ldif 文件。
您可以选择先重新启动服务器,因为此命令可以在 zimbra 运行时运行。但为了确保我们获得冻结环境的备份,我们现在将其停止。
echo 'Saving ldap config'
su zimbra -c '/opt/zimbra/libexec/zmslapcat -c /backup/zimbra-ldap'
echo 'Saving ldap main'
su zimbra -c '/opt/zimbra/libexec/zmslapcat /backup/zimbra-ldap'
echo 'Restarting zimbra'
su zimbra -c '/opt/zimbra/bin/zmcontrol start'
echo 'Finished'
此脚本已在 ubuntu server 14.04 下的 zimbra 8.0.1 上进行了测试。
它应该适用于大多数发行版和 8.0.1 以上的版本
答案2
根据您用于备份的工具,有些工具确实支持稀疏文件,但这种支持并不像真实数据所暗示的那么快。
rsync -S # it works, but it isn't "efficient"
cp --sparse=always
tar -S # the GNU version.
不幸的是,我最喜欢的备份工具 rdiff-backup 目前不支持稀疏文件。我见过一个补丁可以让它支持稀疏文件,但开发人员还没有发布。我也没有用它做任何事情。
Duplicity 似乎也不支持稀疏文件。我没有深入研究。
可能还有其他支持此功能的。我知道移动包含稀疏文件的 qcow2 图像可以按预期工作。
至于备份,对于像 Zimbra 这样复杂的系统,我希望每个人都使用 LVM2 快照或 ZFS 快照来避免停机,然后针对快照存储运行备份。