Zmbkpose
Zmbkpose copied to clipboard
Restauring from FULL curl: option --data-binary: out of memory
Hi Guys,
I have a small problem :) When i try to restore mailbox from my full backup (~3GB ) i receiving this error:
2014-02-23 21:45:55 DEBUG: [email protected] - Restauring from 23/02/2014 21:08:03 FULL curl: option --data-binary: out of memory curl: try 'curl --help' or 'curl --manual' for more information
enybody has sollution for this?
p.s. when i try to make restore from another user (mailbox 200mb ) its working without any problems
problem still exist.....any idea ?
curl cannot get sufficient memory for build the request. Try save memory skipping the web service. Use zimbra user, in your zimbra server, and import the backup as follow : $ /opt/zimbra/bin/zmmailbox -z -m UserEmailAddress postRestURL "//?fmt=tgz&resolve=reset" backup.tgz replace "UserEmailAddress", and "backup.tgz" with the correct values.
You may get the following error: ERROR: zclient.IO_ERROR (Broken pipe) (cause: java.net.SocketException Broken pipe)
In this case, try the follow:
Agree http://www.zimbra.com/forums/administrators/47949-recovery-tgz-mail-file-fails.html
, you can try to import each message using
$ zmmailbox -z -m
Note1: zmmailbox can use a directory argument, but it not examines recursivly, and not filters eml files. Note2: Each directory must exist on the destination mailbox, otherwise you get an error. See below for a script for filter eml files, and create each directory in destination mailbox. untar your backup.tgz file, and use zimbra user for execute the scritp as follow:
$ import_backup.sh [email protected] your_decompress_backup_dir
and patience .....
############ import_backup.sh ####################################
#!/bin/bash
set -e
email=$1
bkdir="$2"
zmmailbox_bin=/opt/zimbra/bin/zmmailbox
if [ ! -x $zmmailbox_bin ] ;then echo "$zmmailbox_bin does not exists" ; exit ; fi
mb_folders=/tmp/mbox_folders
cd "$bkdir"
debug(){ echo "$(date ): $@" ; }
create_folder(){
debug "Creating folder \"$1\" "
$zmmailbox_bin -v -z -m $email createFolder "$1"
}
#Get actual folders
while read Id View Unread Msg_Count Path ;do
[ -z "$Path" ] || echo $Path
done<<EOF |grep '^/.' > $mb_folders
$($zmmailbox_bin -v -z -m $email getAllFolders)
EOF
#Import messages
while read dir;do
#Folder exists?
egrep -q "^${dir#.}$" $mb_folders || create_folder "${dir#.}"
#Import messages in dir
find "$dir" -mindepth 1 -maxdepth 1 -type f -regex '.*\.eml' -print0 |\
xargs -L 1 -0 -r $zmmailbox_bin -v -z -m $email addMessage "${dir#.}"
done<<EOF
$(find . -mindepth 1 -type d )
EOF
Hi, just tried the script of the last comment but there's something wrong with it near line 23-24, could you re-post it?
Sorry, I modified the previous post . This is a display problem because GitHub use Markdown parse for text styles, and ate some characters. Try now please.
Hi, i tried your script but is extremely slow, I checked it and found the problem (and a solution). The message import is done with xargs, but zmmailbox is called for every message:
#Import messages in dir
find "$dir" -mindepth 1 -maxdepth 1 -type f -regex '.*\.eml' -print0 |\
xargs -L 1 -0 -r $zmmailbox_bin -v -z -m $email addMessage "${dir#.}"
I swapped these previous line with:
$zmmailbox_bin -v -z -m $email addMessage "${dir#.}" "$dir"/*eml
In this way all the messages in a folder are imported in a single run of zmmailbox.
Hi, I'm trying the scripts but I get this error for some messages:
Exception in thread "main" java.io.FileNotFoundException: ./Inbox!49/0000220914-CD SF LURIN_ ACTA DE REUNI??N 39.eml (No such file or directory)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
at java.base/java.io.FileInputStream.
The issue of lack of memory was resolved for me by adding physical memory to the server. The server consumed 7 GB of RAM, the archive took up 17 GB. 7+17=24 GB of RAM. I allocated 32 GB of RAM. The recovery went without problems.