備份與還原
備份到另外一顆硬碟
- 首先要先安裝硬碟
- 依照上一篇安裝硬碟,並利用webmin操作
- 參考 http://linux.vbird.org/linux_basic/redhat6.1/linux_06command.php#newHardDisk
當硬碟裝上後要先格式化 (IDE硬碟為 hd, 其餘SATA,SAS都叫做sd ,硬碟的編號依序為a,b,c )
(IDE硬碟第三顆) fdisk /dev/hdc
(SATA硬碟第二顆) fdisk /dev/sdb
建立一個分割區即可
然後,建立檔案系統
mke2fs - j /dev/sdb1 在第二顆硬碟第一分割區格式化為ext3
mke2fs -T ext4 /dev/sdb1 在第二顆硬碟第一分割區格式化為ext4
建立備份的掛載點
mkdir /backup
執行掛載
mount -t ext3 /deb/sdb1 /backup
之後存在 /backup目錄下的資料,實際上就是建立在第二顆硬碟了
然後可以用df 指令觀看掛載的情形
如果要讓分割區在下次開機時能自動掛載,就必須修改 /etc/fstab
整個的fstab檔案會像這樣
/dev/hda1 / ext3 defaults,errors=remount-ro 0 1
/dev/hda5 swap swap defaults 0 0
/dev/hdb1 /hdb ext3 defaults 0 2
- 其次要撰寫備份指令,假設學務系統的位置在/var/www/html/utycx,資料庫叫做utycx的帳號是utycxa,密碼是utycxpwd
mysqldump utycx -u utycxa -putycxpwd --skip-extended-insert | zip >/backup/utycx.sql.zip
就可以備份資料庫到第二顆硬碟
cd /var/www/html/utycx
zip -ur /backup/utycx.up.zip uploads/
就可以備份上傳資料到第二顆硬碟(使用差異性備份)
我們把這三個指令寫在一起成為一個shell script,存於/back1.sh
#/bin/bash
mysqldump utycx -u utycxa -putycxpwd --skip-extended-insert | zip >/backup/utycx.sql.zip
cd /var/www/html/utycx
zip -ur /backup/utycx.up.zip uploads/
這樣執行 /bin/bash /back1.sh 就會備份
我們要把這行指令寫在crontab裡就會自動備份了
輸入指令crontab -e進入編輯模式
輸入i進入INSERT模式
輸入 10 22 * * 6 /bin/bash /back1.sh
表示每週6晚上22點10分以root身份進行/bin/bash /back1.sh備份
備份資料庫到第二顆硬碟DEMO SCRIPT(按日期放在不同目錄)
#/bin/bash
adir=`date +'%Y%m%d'`
cd /backup
mkdir $adir
mysqldump utycx -u root -p(password) --skip-extended-insert | zip >/backup/$adir/utycx.sql.zip
cd /var/www/html/utycx
zip -r /backup/$adir/utycx.up.zip uploads
- 如果真的遇上災難要復原時,,分成兩部份
先重新安裝xoops及所需模組
cp /backup/utycx.up.zip /var/www/html/utycx/uploads
cd /var/www/html/utycx/
unzip -o utycx.up.zip
資料庫的部份
先cd /backup
unzip utycx.sql.zip
mysql -u utycxa -p 登入,,輸入密碼
source utycx.sql 匯入
- 以ftp備份的遠端
讓back1除了在本機備份以外,還可以用ftp的方式上傳到另外一部主機,另外一部主機只要有固定的IP即可,這樣就可以異地備份
#!/bin/bash
mysqldump utycx -u 使用者 -p密碼 --skip-extended-insert | zip >/backup/utycx.sql.zip
cd /var/www/html/utycx
zip -ur /backup/utycx.up.zip uploads
host="163.30.142.8" # 遠端主機
id="admin" # 遠端主機的 FTP 帳號
pw='admipwd' # 該帳號的密碼
adir=`date +'%Y%m%d'` #備份到遠端的何處(變動目錄)
basedir="/backup"
remotedir="/home/admin" # 備份到遠端的何處(基礎目錄)?
cd $basedir
ftp -n "$host" > $basedir/ftp.log 2>&1 <<EOF
user $id $pw
binary
cd $remotedir
mkdir $adir
cd $adir
put utycx.sql.zip
put utycx.up.zip
bye
EOF
沒有留言:
張貼留言