This script do a backup of only one day. This way, we can do incremental backups.
Pay attention to variables DOMAINS, ADMIN and PASSWD
Sorry by my english.
Hope that could be understandable.
#!/bin/bash
# Incremental backup from Zimbra based in date.
# Create the backup folder with the actual date and create files tgz with emails of before day.
#
# Marcio Jose Atanasio
# marcio.jose@atanasio.com.br
#
# Version 20131008
# LOCAL
BCKDIR="/opt/zimbra/backup"
LOGFILE="/var/log/zmbackupin.log"
# Mount CIFS
REMOTE_BACKUP="0"
MNTREMOTE=""
USER=""
MNTPASSWD=""
# Use "all" to backup all domains accounts or put the domains that you want backup with space between.
DOMAINS="YOURDOMAIN.COM.BR"
# Administrator Login
ZIMBRAURL="https://127.0.0.1"
ADMIN="admin"
PASSWD="xxxxxxx"
ZMBACKUPPREFIX="INC"
RETENTION="5"
# ENVIROMENT
DT=`date +%Y"-"%m"-"%d`
DTBCK=`date -d "-2 days" +%m"/"%d"/"%Y`
function put_logger {
echo `date +%Y"-"%m"-"%d" - "%H":"%M`" - $1" >> $LOGFILE
}
function purge_old {
find $BCKDIR/*$ZMBACKUPPREFIX -type d -mtime +$RETENTION -exec rm -rf {} \;
}
function backup_dir {
if [ "$1" = "mount" ]; then
if [ "$REMOTE_BACKUP" = "1" ]; then
/bin/mount.cifs $MNTREMOTE $BCKDIR -o user=$USER,password=$MNTPASSWD
if [ "$?" = "0" ]; then
put_logger "Mount of $MNTREMOTE sucessfull."
else
put_logger "Mount of $MNTREMOTE fail. Backup failed."
exit 0
fi
fi
if [ -d $BCKDIR/$DT-$ZMBACKUPPREFIX ]; then
rm -rf $BCKDIR/$DT-$ZMBACKUPPREFIX
fi
/bin/mkdir $BCKDIR/$DT-$ZMBACKUPPREFIX > /dev/null 2>&1
fi
if [ "$1" = "umount" ]; then
if [ "$REMOTE_BACKUP" = "1" ]; then
/bin/umount $BCKDIR
put_logger "Unmount of $MNTREMOTE sucessfull."
fi
fi
}
function get_domains {
if [ "$DOMAINS" = "all" ]; then
DOMAINS=`/opt/zimbra/bin/zmprov gad | sort`
echo $DOMAINS | sed s/" "/"\n"/g >> $BCKDIR/$DT-$ZMBACKUPPREFIX/domains.txt
fi
put_logger "Domain lists from $DOMAINS saved."
}
function get_lists {
for DOM in `echo $DOMAINS`; do
for LST in `/opt/zimbra/bin/zmprov gadl $DOM` ; do
echo "Lista "$LST >> $BCKDIR/$DT-$ZMBACKUPPREFIX/$DOM.lists.txt
echo "/opt/zimbra/bin/zmprov gdl $LST | grep zimbraMailForwardingAddress | cut -d" " -f2 >> $BCKDIR/$DT-$ZMBACKUPPREFIX/$DOM.lists.txt"
echo "" >> $BCKDIR/$DT-$ZMBACKUPPREFIX/$DOM.lists.txt
done
put_logger "Distribuition list from $DOM saved."
done
}
function backup_accounts_aliases {
for DOM in `echo $DOMAINS`; do
put_logger "Stated backup of account and alias from $DOM."
for ACC in `/opt/zimbra/bin/zmprov -l gaa $DOM | sort`; do
wget -q -t 1 -T 1 -O $BCKDIR/$DT-$ZMBACKUPPREFIX/$ACC.tgz --auth-no-challenge --user=$ADMIN --password=$PASSWD --no-check-certificate $ZIMBRAURL:7071/home/$ACC/\?fmt=tgz\&query=after:$DTBCK
put_logger "$ACC was made backup."
ALIASES=`/opt/zimbra/bin/zmprov ga $ACC | grep zimbraMailAlias | cut -d: -f2`
if [ ! -z "$ALIASES" ]; then
echo $ACC" - >"$ALIASES >> $BCKDIR/$DT--$ZMBACKUPPREFIX/$ACC.alias.txt
put_logger "$ACC have saved alias."
fi
done
put_logger "$DOM backup account and alias finalized."
done
}
# START
put_logger "Backup started"
put_logger "Mounting..."
backup_dir mount
put_logger "Deleting backups with more than $RETENTION days."
purge_old
put_logger "Verifing domains to backup"
get_domains
put_logger "Making backup of distribuition lists"
get_lists
put_logger "Making backup of account and alias"
backup_accounts_aliases
put_logger "Umounting..."
backup_dir umount
put_logger "End of backup"
Nenhum comentário:
Postar um comentário