抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >


定时备份服务器 / 网站数据到 Github 私人仓库

现在 Github 被微软收购后,私人仓库已经开始免费了,然后就可以拿来折腾下了,让其充分发挥下作用,这里我们可以用来备份下网站或者服务器一些数据。

配置 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 添加即可。

建立私人仓库

我们需要先访问 https://github.com/new ,新建一个仓库用来存放备份文件,名称自己随意,记得下面一定要勾选 Private,也就是私人仓库。

配置本地仓库

由于博主是用来备份网站,所以需要备份文件夹为网站根目录 /alidata/,也就是把该文件夹定为本地仓库,使用命令:

#进入需要备份的文件夹
cd /alidata/
#安装git
yum install git
#初始化你的github仓库
git init
#关联到远程github仓库
git remote add origin git@github.com:MHuiG/BackupWebSite.git

关联仓库的时候,后面可以用 HTTPS 链接也可以用 SSH,这里强烈建议选择 SSH,安全性很高。

初次备份

#进入备份的文件夹
cd /alidata/
#忽略大于50.00 MB文件
find . -size +50M>.gitignore
sed -i 's/.//' .gitignore
#把目录下所有文件更改状况提交到暂存区,包括增,删,改。
git add -A
#提交更改的说明,说明随意了,这里为BackupWebSite
git commit -m "BackupWebSite"
#开始推送到Github
git push -u origin master

推送的时候可能会提示 The authenticity of host ‘github.com’ can’t be established. 信息,直进 yes 即可。
然后可以看到仓库的备份文件了。

设置定时备份

在根目录先新建一个 bash 脚本:

nano ~/gitback.sh

代码如下:

#!/bin/bash
#进入到网站根目录,记得修改为自己的站点
cd /alidata/
#将数据库导入到该目录,这里以mysql为例,passwd为数据库密码,all.sql为备份的数据库文件
mysqldump -uroot -ppasswd --events --all-databases>all.sql
#忽略大于50.00 MB文件
find . -size +50M>.gitignore
sed -i 's/.//' .gitignore
git add -A
git commit -m "BackupWebSite"
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

附录

crontab 定时任务中提示 command not found 解决方案

写了个脚本定时从 MySQL 中提取数据,但是 crontab 发邮件提示 mysql command not found

很奇怪,因为直接执行此脚本不会报错,正常运行,但加入到 crontab 中就会报错,

经查,MySQL 不在 crontab 执行的环境变量中

解决方案:

找到 MySQL 的安装路径:

which mysql

假设找到的是:

/home/user1/mysql/bin/mysql

建立软连接

cd /usr/bin && ln -fs /home/user1/mysql/bin/mysql mysql
推荐阅读
mysql的使用 mysql的使用 mysql与pymysql的设置 mysql与pymysql的设置 Hive安装部署 Hive安装部署 CentOS7安装Python3 CentOS7安装Python3 一键安装ecs服务器的web环境(阿里云) 一键安装ecs服务器的web环境(阿里云) 大数据处理技术-sqoop 实战及原理 大数据处理技术-sqoop 实战及原理

留言区

Are You A Robot?