Резервное копирование, несоответствие размеров бекапа Zimbra 8.5.1

Пробовал делать резервную копию /opt/zimbra по инструкции с офф. сайта wiki.zimbra.com/wiki/Backing_up_and_restoring_Zimbra_%28Open_Source_Version%29 ( коммандой cp -rp /opt/zimbra [location of backup]/zimbra_backup ).
На локальную машину бекап создается нормально, верней его размер соответствует текущему размеру каталога /opt/zimbra.
Но если делать бекап сразу на удаленную машину - то размер вырастает в 5-6 раз.
Если на локальной машине это 20 гб - то на удаленную ложится 100-120 гб.
Этому есть нормальное обьяснение ? и как это исправить ?

Комментарии


Zimbra формирует базу данных LDAP в виде разреженного файла размером 80Гб (по умолчанию). Причем полезной информации в нем оказалось всего лишь на 700кб. Было крайне занятно видеть файл размером 80Гб на файловой системе размером 17Гб. Особенно весело было такой файл бэкапить (tar посчитал его не разреженным, а обычным файлом).

Пришлось покопаться в документации по зимбре. Оказывается, в поставке 8.0.2 и выше присутствует специальная утилита mdb_copy, предназначенная для нормального копирования таких файлов. Синтаксис:

mdb_copy /src/dir /destination/dir

Т.е. например так:

mdb_copy /opt/zimbra/data/ldap/mdb/db /backup/zimbra/data/ldap/mdb/db

При восстановлении достаточно воспользоваться обычной copy, при этом помещенная на место база данных при запуске зимбры «разрастется» до нужных размеров, т.е. станет тем же разреженным файлом.

 #!/bin/bash
# Include appropriate paths (since cron doesn't use your normal environment)
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
# Задаем дату
bkpdate=$(date '+%Y-%m-%d')
backupDir=/backup/zimbra
# Останавливаем сервис. Необходимо для целостности данных
/etc/init.d/zimbra stop
# Создаем снапшот, выделяем 11G для изменяемых данных.
lvcreate -L 11G -s -n root-backup /dev/vg0/root
# Запускаем
/etc/init.d/zimbra start
## Монтируем
mount /dev/vg0/root-backup /mnt/snapshot
cd /mnt/snapshot
#Zimbra формирует базу данных LDAP в виде разреженного файла размером 80Гб (по умолчанию). 
#Есть специальная утилита mdb_copy, предназначенная для нормального копирования таких файлов. Синтаксис:
#mdb_copy /src/dir /destination/dir
su -l zimbra -c "mkdir /mnt/snapshot/opt/zimbra/data/ldap/mdb/dbnew"
su -l zimbra -c "mdb_copy /mnt/snapshot/opt/zimbra/data/ldap/mdb/db /mnt/snapshot/opt/zimbra/data/ldap/mdb/dbnew"
 
# Переименовываем файл
rm -f /mnt/snapshot/opt/zimbra/data/ldap/mdb/db/data.mdb
su -l zimbra -c "mv /mnt/snapshot/opt/zimbra/data/ldap/mdb/dbnew/data.mdb /mnt/snapshot/opt/zimbra/data/ldap/mdb/db/data.mdb"
cd /mnt/snapshot/opt
#tar cvpzf $backupDir/zimbra-$bkpdate.tgz *
ssh root@24.160.13.33 /usr/bin/rsnapshot daily
sleep 10
cd /
umount /mnt/snapshot
## Удаляем снапшот, после бекапа. Если оставить - будет замедлять работу.
lvremove -f /dev/vg0/root-backup
 
Спасибо за ответ, буду пробовать