Trong bài viết này tôi chia sẻ script backup mail zimbra sử dụng zmmailbox
và zmprov
Bước 1: Tạo thư mục lưu trữ backup và logs
Bước này sẽ tạo các thư mục lưu trữ và file ghi logs
mkdir -p /opt/zimbra/backup-zimbra
mkdir -p /opt/zimbra/backup-zimbra/backup
mkdir -p /opt/zimbra/backup-zimbra/logs
touch /opt/zimbra/backup-zimbra/logs/zm.log
touch /opt/zimbra/backup-zimbra/logs/user.log
touch /opt/zimbra/backup-zimbra/logs/cron.log
Bước 2: Tạo script backup
Bước này tôi sẽ tạo file auto-backup.sh
với các đoạn script sau.
nano /opt/zimbra/backup-zimbra/auto-backup.sh
Sau đó nhập nội dung script vào. Script này sẽ lưu trữ 3 bản liên tục bản thứ 4 sẽ được xoá bỏ.
#!/bin/bash
#Author: DOTRUNGQUAN.INFO
# Đường dẫn lưu backup
backup_dir="/opt/zimbra/backup-zimbra/backup"
# Định dạng ngày-tháng-năm
date_format=$(date +'%d-%m-%Y')
# Tạo thư mục backup mới
new_backup_dir="$backup_dir/$date_format"
mkdir -p "$new_backup_dir"
# Tên file log
log_file="/opt/zimbra/backup-zimbra/logs/zm.log"
user_log_file="/opt/zimbra/backup-zimbra/logs/user.log"
# Backup danh sách tài khoản
echo "$(date): Starting backup" >> "$log_file"
/opt/zimbra/bin/zmprov -l gaa | while read -r account; do
backup_file="$new_backup_dir/backup-$account.tgz"
/opt/zimbra/bin/zmmailbox -z -m "$account" getRestURL "/?fmt=tgz" > "$backup_file"
if [ -f "$backup_file" ]; then
echo "$(date): Backup successful for user $account" >> "$user_log_file"
else
echo "$(date): Backup failed for user $account" >> "$user_log_file"
fi
done
# Số lượng thư mục backup hiện tại
backup_count=$(ls -l "$backup_dir" | grep '^d' | wc -l)
# Xóa thư mục backup cũ nếu số lượng vượt quá 3
if [ "$backup_count" -gt 3 ]; then
oldest_backup=$(ls -t "$backup_dir" | tail -1)
rm -rf "$backup_dir/$oldest_backup"
fi
echo "$(date): Backup completed" >> "$log_file"
Bước 3: Phân quyền thư mục & file
chown -R zimbra:zimbra /opt/zimbra/backup-zimbra/
Bước 4: Tạo cron tự động backup
Script này tôi sẽ chạy dưới quyền user zimbra
do đó bạn cần su - zimbra
và đặt cron
su - zimbra
crontab -e
Sau đó nhập vào đoạn cron này. Cron này sẽ chạy vào 18h 0 phút hằng ngày
0 18 * * * /opt/zimbra/backup-zimbra/auto-backup.sh >> /opt/zimbra/backup-zimbra/logs/cron.log2>&1