对于很多像博客类的小型个人网站,数据量不多,没有必要使用专门的数据备份服务,利用免费的代码托管空间(比如 Git)完全够用了。
本文以 Git 为例介绍如何 Linux 环境下自动备份文件。
要备份数据,首先要选择一个处可以免费存储数据的地方。对于 Git 空间最著名的莫过于github了,但是 github 对于public的项目是免费的,对于Private(私有)项目每个月要 $7。对于个人网站就有点不划算了。
国内有很多免费并且支持私有项目的 Git 空间,比如 coding.net、code.csdn.net、git.oschina.net 等。
本文以 code.csdn.net 的托管空间为例,csdn 的免费空间有 2G
上限,对于以文本为主的个人博客网站基本够用了。
访问 https://code.csdn.net/projects/new 创建新的 git 项目用于保存数据。
私人数据一定不希望别人随意访问下载吧,所以一定要记得选择“私有项目”
。
创建好空间之后你会得到一个 git 地址: 例如:git@code.csdn.net:youparoject/backup.git
在 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不够安全,你也可以编写效果,将备份文件同步到多个代码托管空间里。
主要流程:
出处:https://www.coderxing.com/backup-website-with-git.html
本文为原创文章,采用署名-相同方式共享 3.0 中国大陆(CC BY-SA 3.0 CN))进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。