原文章以及腳本下載 >>點擊這裏查看<<
前言
自從搭了這個小站,雖然沒幾個人來看,但還是要堅持把日常筆記更新下來。目前用國內的服務器,耐不住會有一些不合邏輯的吐槽,還有一些國際化技術的分享,以後大概率把小站遷到國外。但是看不少使用國外服務器翻車的,網站數據說沒就沒,於是提前早早的研究下網站源文件備份和數據庫備份。
目前主要有三種主流方法:
-
手動備份
-
wordpress 插件備份
-
寶塔備份
博主使用第一種方法,簡單粗暴,重要的是免費。有人覺得手動備份很麻煩,本文帶你簡要分析下三種方法:
最簡單的一種是寶塔備份,在 計劃任務
- 任務類型
分別添加 備份網站
和 備份數據庫
兩個任務,在日誌中可以查看。不過,備份是直接保存到服務器中。若服務器崩了,那數據還是丟了。所以,此時出現了收費的存儲空間,比如阿里雲OSS、騰訊雲COS、七牛雲、又拍雲等等。只需要在 軟件管理
中下載各自的插件,配置完就可以選擇備份到第三方存儲空間。不過,本文暫時不做這方面的介紹。目前,巨硬家的服務免費而且可靠,而且每次只備份新增過的文件,更加方便快捷。
wordpress 插件備份只適合使用wordpress搭建的網站,大部分插件懟備份數據的大小有限制,超過就收費。
手動備份是本文重點介紹方法,使用腳本定時自動備份,備份空間選擇Github/Coding/Gitee私人倉庫,免費空間大小爲1G/2G/2G,足夠使用了。
配置 SSH 公鑰
這裏只介紹 Github 和 Coding 兩種方法,其他的按各自文檔使用。
Github
生成公鑰
在服務器的根目錄生成密鑰:
ssh-keygen -t rsa -C "[email protected]"( 您的郵箱)
添加公鑰
cat ~/.ssh/id_rsa.pub
複製全部內容,粘貼到 GitHub Settings”
- SSH and GPG Keys
- New SSH key
Coding
生成公鑰
在服務器的根目錄生成密鑰:
ssh-keygen -m PEM -t rsa -b 4096 -C "[email protected]"( 您的郵箱)
添加公鑰
cat ~/.ssh/id_rsa.pub
複製全部內容,粘貼到 Coding 右上角
- 個人設置
- SSH 公鑰
- 新增公鑰
。
新建遠程倉庫
正常新建 repository
。
唯一需要注意的是一定要選 Private
,不然其他人 git clone
一下,把你的網站全部偷走了。
在下面配置服務器倉庫時,需要使用 SSH 把要服務器中要備份數據的目錄與新建倉庫關聯起來:
Github:Clone or download
- Use HTTPS
Coding:代碼倉庫
- 設置
- 倉庫設置
- 倉庫名稱
- SSH
配置服務器倉庫
爲了方便,我使用了寶塔管理站點,所以我的服務器要綁定遠程倉庫的目錄爲 /www/wwwroot/網站目錄
。沒使用寶塔的服務器網站目錄應該在 /www/網站目錄
。
cd /www/wwwroot/網站目錄
# 初始化倉庫
git init
# 這裏二選一,填入分配給你的SSH地址
# 關聯到遠程 Github 倉庫
git remote add origin [email protected]:***
# 關聯到遠程 Coding 倉庫
[email protected]:***
自動備份腳本
sudo vim ~/backupWebsite.sh
寫入:
#!/bin/bash
# 要備份的網站目錄
path = /www/wwwroot/你的網站目錄
# 數據庫名稱
SQLName = myWebSiteDB
# 登錄數據庫的用戶名
USERName = root
# 用戶密碼
USERPasswd = ******
#進入到網站根目錄,記得修改爲自己的站點
cd $path
# 導出數據庫並壓縮
mysqldump -u$USERName -p$USERPasswd $SQLName | gizp > $SQLName.sql
# 將網站文件和數據庫文件同步到Github
git add -A
git commit -m "backupsite"
git push -u origin master
# 上傳後刪除sql文件
rm -f $SQLName
測試一下:
bash ~/backupWebsite.sh
刷新一下 Github/Gitee/Coding
倉庫,此刻應該已經上傳了網站和數據庫的所有數據。
注:第一次推送到遠程倉庫可能提示你配置郵箱和用戶名, 按提示操作即可。
git config --global user.email “your email”
git config --global user.name “your name”
腳本下載見首行。
設置定時任務
設置每天凌晨一點半執行一次更新,這個時候服務器壓力比較小:
echo "30 01 * * * bash ~/gitback.sh > ~/backupWebsite.log 2>&1 &" > buw.cron
crontab buw.cron
rm -rf buw.cron
使用 crontab -l
命令查看是否設置成功。