2018年2月28日 星期三

備份與還原

備份與還原

 

備份到另外一顆硬碟
底下是使用指令的方式
當硬碟裝上後要先格式化 (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.sh
讓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

沒有留言:

張貼留言