Linux 每日備份到第二台伺服器教學! 含安裝ftp server、crontab、備份腳本
一直以來都想要有一個完美的網站備份的規劃,畢竟手動備份真的無法很勤勞的定時去備份。目前比較好的網站備份規劃,就是租一台大硬碟伺服器(VPS或實體主機),在裡面安裝ftp server,然後透過備份腳本,讓他自動每日幫你備份。
- 主機環境: Linux Centos
- 網站環境軍哥lnmp一鍵安裝包(安裝教學:)
一、在備份伺服器中,安裝vsftpd、Iftp。
要把需要備份的資料上傳到備份伺服器中,一定要安裝FTP server。在這邊我們用比較熱門的vsftpd軟體套件。
1、vsftpd安裝指令:
1.yum -y install vsftpd
2.touch /etc/vsftpd/chroot_list
3.chkconfig vsftpd on
二、安裝完vsftpd後,開啟port 21。這樣才不會造成登入FTP,被防火牆擋在外面,造成登入失敗。
1.iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
2.service iptables save
三、開啟vsftpd
service vsftpd start
四、安裝Iftp
yum install lftp
2、新增FTP使用者
新增使用者名稱(藍色字體表示你想要新增的使用者名稱,可自行設定)
useradd xxxx
更改使用者的密碼(紅色字體是你剛剛新增的使用者名稱)
userwd xxxx
之後會有這行指令,這邊你只需要輸入你要的密碼即可。為了安全因素,在SSH中你輸入任何資料,都不會顯示。
Changing password for user xxxx.
New password:
3.在網站伺服器中,上傳備份腳本!
如果你是使用軍哥lnmp一鍵包,那備份腳本在/root/lnmp1.2-full/tools中。
如果你沒有備份腳本,我這邊有軍哥lnmp一鍵包中的備份腳本,我已經把註解都繁體化,依照你的伺服器需求,填入相關數值即可。
把備份腳本上傳到隨機目錄即可,只要你知道備份腳本在哪個目錄中就可以了。
軍哥lnmp一鍵包備份腳本:Google雲端下載
以下只需把藍色字體的資料更改成你自己的即可
#!/bin/bash
#Funciont: Backup website and mysql database
#Author: licess
#Website: http://lnmp.org#IMPORTANT!!!Please Setting the following Values!
Backup_Home=“/home/backup/” #你的網站伺服器端的備份目錄
MySQL_Dump=”/usr/local/mysql/bin/mysqldump”
######這邊設定你要備份的網站目錄######
Backup_Dir=(“/home/wwwroot/xxxx.com” “/home/wwwroot/xxxx.com”) #這邊設定你要備份的網站目錄######你需要備份的資料庫(輸入資料庫名稱即可)######
Backup_Database=(“xxxx“)######~Set MySQL UserName and password~######
MYSQL_UserName=’資料庫帳號‘
MYSQL_PassWord=’資料庫密碼‘######啟動FTP備份######
Enable_FTP=0
# 0=啟動; 1=不啟動
######輸入你的FTP資料######
FTP_Host=’127.0.0.1:21‘
FTP_Username=’你的FTP帳號‘
FTP_Password=’你的FTP密碼‘
FTP_Dir=”你想要把備份資料在FTP的哪個目錄?”#Values Setting END!
TodayWWWBackup=www-*-$(date +”%Y%m%d”).tar.gz
TodayDBBackup=db-*-$(date +”%Y%m%d”).sql
OldWWWBackup=www-*-$(date -d -3day +”%Y%m%d”).tar.gz
OldDBBackup=db-*-$(date -d -3day +”%Y%m%d”).sqlBackup_Dir()
{
Backup_Path=$1
Dir_Name=`echo ${Backup_Path##*/}`
Pre_Dir=`echo ${Backup_Path}|sed ‘s/’${Dir_Name}’//g’`
tar zcf ${Backup_Home}www-${Dir_Name}-$(date +”%Y%m%d”).tar.gz -C ${Pre_Dir} ${Dir_Name}
}
Backup_Sql()
{
${MySQL_Dump} -u$MYSQL_UserName -p$MYSQL_PassWord $1 > ${Backup_Home}db-$1-$(date +”%Y%m%d”).sql
}if [ ! -f ${MySQL_Dump} ]; then
echo “mysqldump command not found.please check your setting.”
exit 1
fiif [ ! -d ${Backup_Home} ]; then
mkdir -p ${Backup_Home}
fitype lftp >/dev/null 2>&1 || { echo >&2 “lftp command not found. Install: centos:yum install lftp,debian/ubuntu:apt-get install lftp.”; }
echo “Backup website files…”
for dd in ${Backup_Dir[@]};do
Backup_Dir ${dd}
doneecho “Backup Databases…”
for db in ${Backup_Database[@]};do
Backup_Sql ${db}
doneecho “Delete old backup files…”
rm -f ${Backup_Home}${OldWWWBackup}
rm -f ${Backup_Home}${OldDBBackup}if [ ${Enable_FTP} = 0 ]; then
echo “Uploading backup files to ftp…”
cd ${Backup_Home}
lftp ${FTP_Host} -u ${FTP_Username},${FTP_Password} << EOF
cd ${FTP_Dir}
mrm ${OldWWWBackup}
mrm ${OldDBBackup}
mput ${TodayWWWBackup}
mput ${TodayDBBackup}
bye
EOFecho “complete.”
fi
4.測試備份腳本是否可執行
填完備份腳本的資料後,就要來執行是否你填的資料都正確!
目錄切換至你放備份腳本的目錄(藍字為軍哥lnmp備份腳本存放目錄)
cd /root/lnmp1.2-full/tools
執行你的備份腳本!
sh backup.sh
在這邊如果他沒有出現錯誤訊息,基本上就代表你備份腳本執行成功,這時候就去你的備份伺服器看看有沒有網站的備份資料吧!
如果有錯誤訊息,可能是你資料填寫有誤或是防火牆有擋道,建議先關閉Linux防火牆再試試看。
5.安裝crontab,讓你伺服器定時執行備份腳本!
crontab是一個能讓你定時處理某件事情的軟體,所以我們就用這套軟體,來讓我們每天都自動執行一次我們的備份腳本!
事不宜遲,來安裝吧!
yum install vixie-cron crontabs
設定開機自動開啟crontab
chkconfig crond on
開啟crontab
service crond start
加入crontab定時任務(已每日凌晨3點執行為例,需要詳細時間設定教學可看:點我)
crontab -e
之後在按〈i〉進入編輯模式,輸入以下資料(藍字為軍哥lnmp備份腳本存放目錄)
0 3 * * * /root/lnmp1.2-full/tools
輸入完畢後,按下鍵盤的《ESC》,之後再輸入〈:wq〉再按下鍵盤的《Enter》,這樣你的crontab就設定完成了!
為了確定你有成功輸入crontab的定時任務,你可以輸入
crontab -l
這個指令來觀看你的crontab的任務列表, 如果什麼資料都沒出現,代表你剛剛沒有新增到crontab,再去重新把步驟五重新做一次吧!
如果以上都非常順利完成,那就代表你完成囉!
感謝分享,VPS / 獨服 備份才是王道。
crontab 定時任務,0 3 * * * /root/lnmp1.2-full/tools/backup.sh > /dev/null 2>&1 (* / 之間你少打一個空格)
感謝提醒~!