[FreeBSD]備份系統的bash script

這次應該萬無一失了,每天定時備份所有資料庫和/etc、/usr/local/etc裡面的設定檔、以及/home底下的所有資料。然後自己使用的Windows系統再定時從samba去把FreeBSD上的備份檔抓回來多存一份。

2013/08/08 UPDATE:現在我改成直接丟到開了NFS分享的NAS系統上面去


#!/usr/local/bin/bash

# 設定備份檔放置目錄
BACKUP_DEST="/nfs_backup/"
WORKINGDIR="/nfs_backup/"

# 設定會用到的工具路徑
CD="/usr/bin/cd"
FIND="/usr/bin/find"
MYSQL="/usr/local/bin/mysql"
MYSQLDUMP="/usr/local/bin/mysqldump"
RM="/bin/rm"
TAR="/usr/bin/tar"


# 備份所有資料庫
#   先列出所有資料庫
databases=`${MYSQL} -BN -uroot -p[密碼] -e "show databases"`

cd ${BACKUP_DEST}

date=$( date "+%Y%m%d")

for dbname in $databases;
do
    ${MYSQLDUMP} --single-transaction -uroot -p[密碼] ${dbname} > "${dbname}-${date}.sql"
    ${TAR} cjvf mysql-${dbname}-${date}.tar.bz2 ${dbname}-${date}.sql
    ${RM} -f ${dbname}-${date}.sql
done

# 備份/etc
${TAR} cjvfL ${BACKUP_DEST}etc-${date}.tar.bz2 /etc

# 備份/usr/local/etc
${TAR} cjvfL ${BACKUP_DEST}usr_local_etc-${date}.tar.bz2 /usr/local/etc

# 備份/usr/local/www/
${TAR} cjvfL ${BACKUP_DEST}usr_local_www-${date}.tar.bz2 /usr/local/www

# 備份/home
${TAR} cjvfL ${BACKUP_DEST}home-${date}.tar.bz2 /home

# 刪除7天前的檔案
${CD} ${WORKINGDIR}
${FIND} ${BACKUP_DEST}*.bz2 -mtime +7d -exec rm '{}' ;