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

配置Git SSH密钥

由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以必须要让github仓库认证你SSH key,在操作之前,需要先在服务器上生成SSH key。

我们先去根目录下使用命令:

1
2
cd ~
ssh-keygen -t rsa

这里会要你命名密匙名称(这里建议使用默认名称),然后连续按几次Enter,这时候会在/root/.ssh文件夹生成2个ssh密钥,然后我们查看公钥id_rsa.pub。

1
cat ~/.ssh/id_rsa.pub

查看后,再复制下公钥,然后打开Github官网,进入 https://github.com/settings/ssh/new ,Title随便填,然后Key填入刚刚复制的密匙,最后点击Add SSH Key添加即可。

建立私人仓库

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

配置本地仓库

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

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

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

初次备份

1
2
3
4
5
6
7
8
9
10
11
#进入备份的文件夹
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脚本:

1
nano ~/gitback.sh

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
#!/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保存退出。再测试下脚本,使用命令

1
bash ~/gitback.sh

脚本没问题的话,再设置为每天05:15执行一次:

1
2
3
4
#并将运行日志输出到根目录的siteback.log文件
echo "15 05 * * * bash ~/gitback.sh > ~/siteback.log 2>&1 &" > bt.cron
crontab bt.cron
rm -rf bt.cron

最后使用命令查看添加成功。

1
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

评论