Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- if [ "$(whoami)" != "zimbra" ]; then
- echo "Script must be run as user: zimbra"
- exit -1
- fi
- WORKDIR=/tmp/migration
- DETAILSDIR=$WORKDIR/details
- PWDSDIR=$WORKDIR/passwords
- LISTSDIR=$WORKDIR/lists
- ALIASESDIR=$WORKDIR/aliases
- DATADIR=$WORKDIR/data
- DOMAIN=$2
- DESTINATION=$3
- if ! (([ "$1" == "export" ] && [ ! "$#" -lt 3 ]) || [ "$1" == "import" ]); then
- echo "Usage: $0 export domain destination"
- echo " $0 import"
- exit -1
- fi
- timestamp() {
- date +"%T"
- }
- prepare () {
- if [ -d "$WORKDIR" ]; then
- rm -rf $WORKDIR
- echo "Cleaned up $WORKDIR"
- fi
- mkdir -p $DETAILSDIR $PWDSDIR $LISTSDIR $ALIASESDIR $DATADIR
- }
- _export () {
- zmprov -l gaa | grep $DOMAIN | tee -a $WORKDIR/users.txt
- for user in `cat $WORKDIR/users.txt`; do zmprov ga $user | grep -i Name: | tee -a $DETAILSDIR/$user.txt; done
- for user in `cat $WORKDIR/users.txt`; do zmprov -l ga $user userPassword | grep userPassword: | awk '{print $2}' | tee -a $PWDSDIR/$user.shadow; done
- zmprov gadl | grep $DOMAIN | tee -a $WORKDIR/lists.txt
- for list in `cat $WORKDIR/lists.txt`; do zmprov gdlm $list > $LISTSDIR/$list.txt; echo "$list"; done
- for user in `cat $WORKDIR/users.txt`; do zmprov ga $user | grep zimbraMailAlias | awk '{print $2}' | tee -a $ALIASESDIR/$user.txt; echo $i; done
- find $ALIASESDIR -type f -empty | xargs -n1 rm -v
- for user in `cat $WORKDIR/users.txt`; do echo "Exporting mailbox $user"; zmmailbox -z -m $user getRestURL '/?fmt=tgz' > $DATADIR/$user.tgz; done
- }
- import () {
- export LC_ALL="en_US.UTF-8"
- for i in `cat $WORKDIR/users.txt`
- do
- givenName=$(grep givenName: $DETAILSDIR/$i.txt | cut -d ":" -f2)
- displayName=$(grep displayName: $DETAILSDIR/$i.txt | cut -d ":" -f2)
- shadowpass=$(cat $PWDSDIR/$i.shadow)
- zmprov ca $i "TeMpPa55^()" cn "$givenName" displayName "$displayName" givenName "$givenName"
- zmprov ma $i userPassword "$shadowpass"
- done
- for list in `cat $WORKDIR/lists.txt`; do zmprov cdl $LISTSDIR/$list ; echo "$list -- done "; done
- for list in `cat $WORKDIR/lists.txt`
- do
- for mbmr in `grep -v '#' $LISTSDIR/$list.txt | grep '@'`
- do
- zmprov adlm $list $mbmr
- echo " $mbmr has been added to $list"
- done
- done
- for user in `cat $WORKDIR/users.txt`
- do
- echo $user
- if [ -f "$ALIASESDIR/$user.txt" ]; then
- for alias in `grep '@' $ALIASESDIR/$user.txt`
- do
- zmprov aaa $user $alias
- echo "$user ALIAS $alias - Restored"
- done
- fi
- done
- for mailbox in `cat $WORKDIR/users.txt`; do zmmailbox -z -m $mailbox postRestURL "/?fmt=tgz&resolve=skip" $DATADIR/$mailbox.tgz; echo "$mailbox - done "; done
- }
- case "$1" in
- export)
- #prepare
- echo "Export started $(timestamp)"
- _export
- echo "Export finished $(timestamp)"
- echo "Please type root password of $DESTINATION"
- rsync -avz $WORKDIR/ root@$DESTINATION:$WORKDIR/
- ;;
- import)
- echo "Import started $(timestamp)"
- import
- echo "Import finished $(timestamp)"
- ;;
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement