Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
function usage() {
echo "usage: $0 <auth-token> <group-address> <mbox-dir>"
echo "To generate an auth token go to and get an access token for Google Groups migration"
) >&2
exit 5
[ -z "$AUTH_TOKEN" -o -z "$GROUP" -o -z "$MBOX_DIR" ] && usage
for file in $MBOX_DIR/*; do
curl -H"Authorization: Bearer $AUTH_TOKEN" -H'Content-Type: message/rfc822' -X POST \
"$GROUP/archive?uploadType=media" --data-binary @${file} || exit 1

This comment has been minimized.

Copy link

miguelperezit commented Sep 12, 2019

Hi there,

Thanks for this script. I've exported the mbox files correctly (apparently) but when I use your script to import those mbox files I only get this "error" message:
"error": {
"errors": [
"domain": "global",
"reason": "invalid",
"message": "Unable to parse the raw message"
"code": 400,
"message": "Unable to parse the raw message"

Is this easy to solve?
Any thoughts?

Thanks in advance!


This comment has been minimized.

Copy link

eneusta1 commented Jun 3, 2020

This script works a treat ; have used it for TWO of my Gsuite migrations to date.

I am getting 408 timeout messages now and again. Do you think the API is trying to throttle things? I wonder if instead of a temporary token ; a project-based token might speed things up? I'm not expert at the API game but I wanted to thank you for this tiny if yet invaluable script... I'm wiring a reddit blog post to document my woeful experience which became much less woeful when I found this script. Thank you !!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.