Google +    Album

= linux 網頁及資料庫每日備份 =

1.事前小動作

先在要存放的位置建立資料夾,
縱使備份,單單下指令似乎不會自動產生資料夾,
因此得先做這樣的動作,
首先在根目錄建立...
/wwwbackup/和/wwwbackup/wwwlog


2.對網頁資料夾做備份動作,檔名存為mysql_backup.sh

---------------------------以下為程式碼---------------------------
#!/bin/bash

BACKUPDIR=/wwwbackup/
(備份後存放位置)
LOGDIR=/wwwbackup/wwwlog
(log檔存放位置)

echo "[backup www have error] : " `date +%F` > $LOGDIR/html_backup_err.log

cd $BACKUPDIR
days=3
(備份的天數)
for ((i=$days-1 ; i>=1 ; i=i-1))
do
declare -i j=$i-1
mv html_$j.tar.bz2 html_$i.tar.bz2 2>> $LOGDIR/html_backup_err.log
done


cd /data/

tar jcf $BACKUPDIR/html_0.tar.bz2 moodle 2>> $LOGDIR/html_backup_err.log

---------------------------以上為程式碼---------------------------

3.對資料庫做備份動作,檔名存為mysql_backup.sh

---------------------------以下為程式碼---------------------------
#!/bin/bash

BACKUPDIR=/wwwbackup/(備份後存放位置)
LOGDIR=/wwwbackup/wwwlog(log檔存放位置)

echo "[mysql database backup error] : " `date +%F` > $LOGDIR/mysql_backup_err.log

cd $BACKUPDIR
days=3 (備份的天數)
for ((i=$days-1 ; i>=1 ; i=i-1))
do
declare -i j=$i-1
mv mysql_$j.sql.gz mysql_$i.sql.gz 2>> $LOGDIR/mysql_backup_err.log
done

cd $BACKUPDIR

mysqldump -u root -p "your password" > mysql_0.sql 2>> $LOGDIR/pgsql_backup_err.log(對資料庫下dump指令)

gzip mysql_0.sql 2>> $LOGDIR/mysql_backup_err.log(作壓縮資料庫的動作)
---------------------------以上為程式碼---------------------------

4.建立備份排程

以上皆完成後,把3、4寫好的文件分別存為html_backup.sh、mysql_backup.sh,
然後放到/opt/backup/bin/中,
並且用root權限登入後,下指令crontab -e,

---------------------------以下為程式碼---------------------------
30 01 * * * /opt/backup/bin/html_backup.sh(半夜一點半執行此指令)
30 03 * * * /opt/backup/bin/mysql_backup.sh(凌晨三點半執行此指令)
---------------------------以上為程式碼---------------------------

這樣應該就行了,半夜就會自動執行囉。

沒有留言: