Linux VPS定時備份服務器/網站數據到Github私人倉庫
教程
首先你肯定需要一個Github
賬號,沒有的可以去註冊一個,地址:https://github.com。有了賬號就繼續看。
1、配置Git SSH密鑰
由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以必须要让github仓库认证你SSH key,在操作之前,需要先在服务器上生成SSH key。
我們先去根目錄下使用命令:
cd ~
ssh-keygen -t rsa
這裡會要你命名密匙名稱(這裡建議使用默認名稱),然後連續按幾次Enter
,這時候會在/root/.ssh
文件夾生成2
個ssh
密鑰,然後我們查看公鑰id_rsa.pub
。
cat ~/.ssh/id_rsa.pub
查看後,再复制下公鑰,然後打開Github
官網,進入https://github.com/settings/ssh/new,Title
隨便填,然後Key
填入剛剛複制的密匙,最後點擊Add SSH Key
添加即可。
2、建立私人倉庫
我們需要先訪問https://github.com/new,新建一個倉庫用來存放備份文件,名稱自己隨意,記得下面一定要勾選Private
,也就是私人倉庫。不然你辛辛苦苦備份的小姐姐就要被別人偷走了。
3、配置本地倉庫
由於博主是用來備份網站,所以需要備份文件夾為/home/www.moerats.com
,也就是把該文件夾定為本地倉庫,使用命令:
#进入需要备份的文件夹
cd /home/www.moerats.com
#初始化你的github仓库
git init
#关联到远程github仓库
git remote add origin git@github.com:iiiiiii1/MOERATS.git
關聯倉庫的時候,後面可以用HTTPS
鏈接也可以用SSH
,這裡強烈建議選擇SSH
,安全性很高。
4、初次備份
#进入备份的文件夹
cd /home/www.moerats.com
#把目录下所有文件更改状况提交到暂存区,包括增,删,改。
git add -A
#提交更改的说明,说明随意了,这里为backsite
git commit -m "backsite"
#开始推送到Github
git push -u origin master
推送的時候可能會提示The authenticity of host 'github.com' can't be established.
信息,直進yes
即可。
然後可以看到倉庫的備份文件了。
5、設置定時備份
在根目錄先新建一個bash
腳本:
nano ~/gitback.sh
代碼如下:
#!/bin/bash
#进入到网站根目录,记得修改为自己的站点
cd /home/xxx.com
#将数据库导入到该目录,这里以mysql为例,passwd为数据库密码,typecho为数据库名称,typecho.sql为备份的数据库文件
mysqldump -uroot -ppasswd typecho > typecho.sql
git add -A
git commit -m "backsite"
git push -u origin master
然後編輯好了後,使用ctrl+x
,y
保存退出。再測試下腳本,使用命令:
bash ~/gitback.sh
腳本沒問題的話,再設置為每天05:15
執行一次:
echo "15 05 * * * bash ~/gitback.sh" > bt.cron
crontab bt.cron
rm -rf bt.cron
最後使用crontab -l
命令查看添加成功沒。成功的話,就基本上算完成了。
推送失敗
如果你將本地文件夾推送到Github
失敗的話,常見原因有2
種,具體如下。
1、郵件問題
报错提示:Your push would publish a private email address.
這裡可能是你將你的郵件地址私密了,解決方法如下:
#方法一,如果你想一直保持私密,可以选择方法二
访问https://github.com/settings/emails,将Keep my email address private的勾去掉。
#方法二
1、访问https://github.com/settings/emails,将Block command line pushes that expose my email的勾去掉。
2、设置你的github邮箱,修改成自己的再运行命令:
git config --global user.email "admin@moerats.com"
2、密匙問題
报错提示:Permission denied (publickey).
大概的原因就是,你設置密匙的時候改成了其它名稱,而ssh
默認只讀取id_rsa
,所以會顯示沒權限。解決方法如下:
#方法一
进入根目录的.ssh文件夹,将你的github密匙文件,重新更名为id_rsa。
#方法二
将github密匙添加到ssh agent,比如密匙名称为github,使用命令:
ssh-agent bash
ssh-add ~/.ssh/github
總結
使用該方法備份網站是個不錯的選擇,不過別用來備份大文件東西,比如電影什麼的,聽說有限制,具體多少暫時還沒測試。