Linux上要做到自動備份其實很容易,透過幾行Shell指令就能做到。

這裡要示範的是將網頁伺服器服務(Apache)內的html資料夾,以及整個資料庫服務(MySQL)內的所有資料庫備份到/home/backup/daily。

開啟一份空白文件,將以下指令貼入,另存為backup_daily.sh。

#!/bin/bash

# 0. Get the date messages and backup directory
day=`date +%Y-%m-%d`
basedir=”/home/backup/daily”

# 1. MySQL ( PATH = /var/lib/mysql )
/etc/rc.d/init.d/mysqld stop
cd /var/lib
tar -zcf “$basedir”/mysql.”$day”.tar.gz mysql 2> /dev/null
/etc/rc.d/init.d/mysqld start

# 2. html ( PATH = /var/www/html )
cd /var/www
tar -zcf “$basedir”/html.”$day”.tar.gz html 2> /dev/null

將剛才存好的backup_daily.sh,放到/etc/cron.daily,並給予執行權限(建議設為755),再到/home新增一個backup資料夾,再下一層再加一個daily資料夾,這樣才會符合指令中的/home/backup/daily位置。

以CentOS 5.3來說,預設會在每天凌晨四點執行/etc/cron.daily下所有shell script。如果想確定剛才做的動作有沒有正確,可以直接執行/etc/cron.daily/backup_daily.sh,再到/home/backup/daily下檢查有沒有兩個含有日期的壓縮檔。

參考資料:Linux 備份策略

更新日期: 2017/05/03