Máy zimbra cài Centos 7.9 có IP là 192.168.1.108 (thay đổi theo thực tế)
Thiết bị NAS của hãng Synology có IP là 192.168.1.234 (thay đổi theo thực tế)
Bước 1: kích hoạt NFS service (là dịch vụ chia sẻ file) trên NAS: Control Panel –> File Services, tại tab Win/Mac/NFS (hoặc NFS hoặc SMB/AFP/NFS), tick vào Enable NFS và Apply default Unix permissions
Bước 2: Phân quyền NFS permission cho thư mục chia sẻ.
2.1. Control Panel –> Shared Folder. Chọn thư mục cần chia sẻ và click Edit. Nếu chưa có thư mục thì bạn tạo thư mục trước. Ví dụ bạn tạo thư mục ZIMBRA_BACKUP
2.2. Tại tab NFS Permissions, chọn Create để tạo NFS rules.
2.3. Nhập vào các thông số cần thiết: IP máy client, quyền đọc/ghi.
Chỗ hostname or IP bạn có thể chỉ định 1 IP hoặc một dải subnet cho phép truy cập vào thư mục chia sẻ trên NAS. Ở đây là IP của zimbra server hoặc LAN subnet.
2.4. Sau khi thiết lập rule, permission cho thư mục xong, bạn ghi nhớ đường dẫn để truy cập từ máy client bằng giao thức NFS. Ví dụ như: Mount path: /volume1/ZIMBRA_BACKUP
Bước 3: cài đặt nfs client trên máy linux
yum -y install nfs-utils
systemctl start rpcbind
systemctl enable rpcbind
Bước 4: Từ máy Linux, mount thư mục trên NAS thông qua giao thức NFS. Ví dụ:
– Tạo mount point (thư mục trên Zimbra server), với quyền root:
mkdir /NAS_BACKUP
– Mount mount point này vào đường dẫn NFS của NAS. Thay đổi IP NAS theo thực tế.
mount -t nfs 192.168.1.234:/volume1/ZIMBRA_BACKUP NAS_BACKUP
– Kiểm tra:
df -h
Tuỳ chọn: Edit file fstab để tự động mount thư mục này mỗi khi khởi động lại server.
vi /etc/fstab
Thêm vào dòng sau, lưu ý 192.168.1.234 là IP của NAS, thay đổi theo thực tế:
192.168.1.234:/volume1/ZIMBRA_BACKUP /NAS_BACKUP nfs defaults 0 0
Bước 5: Tạo script để tự động copy dữ liệu từ /opt/zimbra/backup sang /NAS_BACKUP
5.1. Tạo file copybackup.sh
touch /opt/scripts/copybackup.sh
chmod +x /opt/scripts/copybackup.sh
Edit file copybackup.sh:
vi /opt/scripts/copybackup.sh
Thêm nội dung sau:
#!/bin/bash
# Zimbra Backup Script v0.0001
# Requires that you have ssh-keys: https://help.ubuntu.com/community/SSHHowto#Public%20key%20authentication
# This script is intended to run from the crontab as root
# Compiled from different resources by Oliver Bross - oliver@bross.eu
# the destination log file
BACKUPLOG="/var/log/rsync-backup.log"
# the destination directory for local backups
# example : DESTLOCAL=/opt/zimbra-backup/
DESTLOCAL=/opt/zimbra/backup
# the destination for remote backups
# example: DESTREMOTE="zimbrabackp.server.net:/Backup/zextras"
DESTREMOTE=/ZIMBRA_BACKUP
# Outputs the time the backup started, for log/tracking purposes
START=$(date +%s)
echo ZeXtras Remote rSync Backup > $BACKUPLOG
echo >> $BACKUPLOG
echo Time backup started : $(date +%a) $(date +%T). >> $BACKUPLOG
# Let's write few bits into the log file
echo >> $BACKUPLOG
echo Source : $DESTLOCAL >> $BACKUPLOG
echo Destination : $DESTREMOTE >> $BACKUPLOG
echo Backup Log : $BACKUPLOG >> $BACKUPLOG
echo >> $BACKUPLOG
# Am I root or not?
if [ x`whoami` != xroot ]; then
echo Error: Must be run as root user
exit 1
fi
# exit 0
# backup the backup dir to remote
echo Syncing files started >> $BACKUPLOG
rsync -azrtqHK --delete $DESTLOCAL $DESTREMOTE >> $BACKUPLOG 2>&1
echo Syncing of files finished >> $BACKUPLOG
echo "(Any errors would be showsn abowe, if nothing shown, all went accoding to the plan!)" >> $BACKUPLOG
echo >> $BACKUPLOG
# Outputs the time the backup finished
FINISH=$(date +%s)
echo Time backup finished : $(date +%a) $(date +%T). >> $BACKUPLOG
# Lets see how log it all took
echo "Total Backup Time taken : $(( ($FINISH-$START) / 60 )) minutes, $(( ($FINISH-$START) % 60 )) seconds" >> $BACKUPLOG
echo >> $BACKUPLOG
# Email some details over ... well, email the log file :-) . Chua thuc hien duoc tren mailstore server
#( echo "Subject: ZeXtras Remote rSync Backup results"; echo; cat $BACKUPLOG ) | /opt/zimbra/common/sbin/sendmail minhhoang@zimilab.com
# end
Chạy thử script.
/opt/scripts/copybackup.sh
Nếu ok, cho file này vào crontab, với quyền root:
crontab -e
49 1 * * * /opt/scripts/copybackup.sh 2>&1