说明:现在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
执行一次:
#并将运行日志输出到根目录的siteback.log文件
echo "15 05 * * * bash ~/gitback.sh > ~/siteback.log 2>&1 &" > 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
总结
使用该方法备份网站是个不错的选择,不过别用来备份大文件东西,比如电影什么的,听说有限制,具体多少暂时还没测试。
版权声明:本文为原创文章,版权归 Rat's Blog 所有,转载请注明出处!
本文链接:https://www.moerats.com/archives/858/
如教程需要更新,或者相关链接出现404,可以在文章下面评论留言。
请问这个定时备份,在重启之后还有效果嘛?如果没有的话,怎么让他再重启之后还能自动定时备份呢?谢谢!
重启的话,理论上是有效的,你可以观察下。
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
博主,用的小内存安装的那片教程,请问这里怎么填写呢
小内存安装脚本?如果是的话,大概就不适合这个备份脚本了,需要修改下
emm,博主应该怎么改啊
链接:https://www.infvie.com/企鹅:1473934158名称:Infvie's Blog描述:分享运维实用技术,包括:运维监控、数据分析、集群部署、安全攻防、SRE学习交流平台头像:https://www.infvie.com/wp-content/uploads/2019/03/favicon.ico分类:运维相关技术分享是否链接了本页面:是
在用centos6,设置了这个
crontab -e
/2 bash ~/gitback.sh ##想每两分钟执行一次测试,但是没有执行
crontab -l ##可以看到刚刚设置的任务
来自一枚萌新
这个我在debian上么问题,是root用户吗?
上个问题已解决,现在每天正常备份,但是想知道如何恢复备份呢,假如A服务器是备份在仓库,可以恢复到B服务器吗,可以的话具体怎么操作
配置好git信息,然后直接git拉取就行了
这个我也不是很清楚
听说Github空间可以到10GB?
没这么夸张吧,我听说的是最高1G
小白来问个问题了,我备份的东西有将近600M,将来再增加估计到不了1G,恢复拉取的话,不会也不想鼓捣这个,但如果到时直接下载的话,用Github桌面、迅雷、网页下载,我下载平常几兆的东西都很慢,用移动流量快,但这太大了,纠结我还备不备份……(主要是想担心服务器硬件坏了可以恢复……西数的镜像要钱……)
卧槽,呆哥还小白,要不我免费提供ftp给你备份
建议在nginx配置文件中禁止访问typecho.sql文件,不禁止的话别人直接可以通过url下载到这个文件,整个typecho数据库信息就泄露了。
这个在备份命令结尾加个删除命令也行。
就是速度慢的可怜
反正也是后台执行,无所谓
巨硬可干了点好事
不是一直挺良心吗
我一般用宝塔+腾讯云COS。每月都有免费额度用来备份,足够了。
备份的话,适合自己的就行了。