From 4cd99be1615a8b2d66b63bce3f9f8e2fdf05d5b8 Mon Sep 17 00:00:00 2001 From: "LINUXexpert.org" <51408202+LINUXexpert-org@users.noreply.github.com> Date: Wed, 11 Jun 2025 15:06:24 -0700 Subject: [PATCH] Create zimbra_backup.sh --- zimbra_backup.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 zimbra_backup.sh diff --git a/zimbra_backup.sh b/zimbra_backup.sh new file mode 100644 index 0000000..30b5599 --- /dev/null +++ b/zimbra_backup.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Ensure script is run as root or sudo +if [ "$EUID" -ne 0 ]; then + echo "❌ This script must be run as root or with sudo." + exit 1 +fi + +# Prompt for email and backup directory +read -p "Enter Zimbra username (email address): " EMAIL +read -p "Enter backup directory (absolute path) [/opt/zimbra/backups]: " BACKUP_DIR + +# Use default if none provided +BACKUP_DIR=${BACKUP_DIR:-/opt/zimbra/backups} + +# Ensure directory exists +mkdir -p "$BACKUP_DIR" +chown zimbra:zimbra "$BACKUP_DIR" + +# Generate timestamped filename +TIMESTAMP=$(date +%F_%H-%M-%S) +BACKUP_FILE="${BACKUP_DIR}/${EMAIL}_${TIMESTAMP}.tgz" + +# Confirm action +echo "Backing up mailbox for $EMAIL to $BACKUP_FILE" +read -p "Proceed? (y/n): " CONFIRM +if [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then + echo "❌ Backup cancelled." + exit 0 +fi + +# Run zmmailbox command as zimbra user +echo "📦 Starting backup..." +sudo -u zimbra bash -c "/opt/zimbra/bin/zmmailbox -z -m '$EMAIL' getRestURL '//?fmt=tgz'" > "$BACKUP_FILE" + +# Verify success +if [ $? -eq 0 ]; then + echo "✅ Backup completed: $BACKUP_FILE" +else + echo "❌ Backup failed. Check if the user exists or zmmailbox is working." + rm -f "$BACKUP_FILE" + exit 1 +fi