BASH:
#!/bin/bash if [[ $EUID -ne 0 ]]; then echo "This script must be run as root" 1>&2 exit 1 fi
PERL:
#!/usr/bin/env perl
if (0 == $> || 0 == $<) {
# running by root
} else {
# not running by root
}
若觀看本部落格造成您身體不適,請左轉出口離開,謝謝合作
BASH:
#!/bin/bash if [[ $EUID -ne 0 ]]; then echo "This script must be run as root" 1>&2 exit 1 fi
PERL:
#!/usr/bin/env perl
if (0 == $> || 0 == $<) {
# running by root
} else {
# not running by root
}
這次應該萬無一失了,每天定時備份所有資料庫和/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 '{}' ;