如何利用免费 Git 空间自动备份网站数据

发表于2016-12-03   646次阅读

对于很多像博客类的小型个人网站,数据量不多,没有必要使用专门的数据备份服务,利用免费的代码托管空间(比如 Git)完全够用了。

本文以 Git 为例介绍如何 Linux 环境下自动备份文件。

免费 Git 空间

要备份数据,首先要选择一个处可以免费存储数据的地方。对于 Git 空间最著名的莫过于github了,但是 github 对于public的项目是免费的,对于Private(私有)项目每个月要 $7。对于个人网站就有点不划算了。

国内有很多免费并且支持私有项目的 Git 空间,比如 coding.netcode.csdn.netgit.oschina.net 等。

本文以 code.csdn.net 的托管空间为例,csdn 的免费空间有 2G 上限,对于以文本为主的个人博客网站基本够用了。

环境准备

创建 Git 项目

访问 https://code.csdn.net/projects/new 创建新的 git 项目用于保存数据。

私人数据一定不希望别人随意访问下载吧,所以一定要记得选择“私有项目”

创建好空间之后你会得到一个 git 地址: 例如:git@code.csdn.net:youparoject/backup.git

创建 ssh 秘钥

在 Linux 下生成 ssh 秘钥用于无密码同步数据到 git 空间。

$ ssh-keygen -t rsa -C youremail@email.com

其中的邮箱地址替换成你在 code.csdn.net 的邮箱地址。回车之后会提示输入密码,这是在提交项目时使用,如果要自动提交这里要留空,直接回车就好。

这时你会在你的用户目录中找到.ssh文件夹。其中的 id_rsa.pub 就是刚刚生成的ssh公钥。

登录 项目设置->添加公钥,将刚刚生成的 id_rsa.pub 文件内容粘贴并保存,其中的名称随意。

$  cat ~/.ssh/id_rsa.pub

csdn 添加公钥参考文档参见《管理公钥》

创建本地空间

在提交 ssh 公钥之后你就有在本地访问远程空间的权限了,而且不需要密码。

$ git clone git@code.csdn.net:yourproejct/backup.git

第一次提交文件之前,你需要做一些初始化操作

$ git config --global user.email "you@example.com"
$ git config --global user.name "you"

如果你默认在当前分支下提交可能还需要执行如下命令

$ git config --global push.default matching

第一次提交可能需要加分支名称

$ git push -u origin master

备份文件

本文以备份 mysql 数据为例。dump msyql 数据表到项目空间目录。

$ mysqldump -uuser -ppsss 数据库名称 > 项目空间目录/数据库名称.sql

提交所有待备份文件

$ git add -A ; git commit -m 'backup some files' ; git push;

这个备份工作就完成了。

自动定期执行

通过 linux crontab 来定时执行备份操作,例如:

$ crontab -l

每天0点备份数据。1点提交自动提交数据

总结

上面只是介绍了基本的原理和做法,你可以解释自己的实际情况扩展更丰富的功能、比如为了节省项目空间可以压缩文件;如果文件过大可以分段压缩;还可以给文件打上日期标记,保存多天的数据;如果你觉得一个csdn不够安全,你也可以编写效果,将备份文件同步到多个代码托管空间里。

主要流程:

  • 申请免费 git 空间、创建私有项目。
  • 创建 ssh 秘钥用于无密码访问。
  • 初始化本地空间。
  • 编写脚本备份文件并提交(本文只是简单举例,并未编写脚本,更灵活的方式还是通过脚本控制更容易扩展).
  • 通过 crontab 定制进行备份。