标签归档:github

MySQL自动备份并提交到码云Git仓库

之所以选择码云是因为其私有仓库是免费的,而GitHub私有仓库是收费,约7+美元一月,对于个人开发者似乎也是一笔不小的费用。

在创建自动将备份上传到码云Git仓库前,建议您先看下以下文章:

如何通过Git将本地项目推送到码云或GitHub

对于不太了解Git的朋友来说,此文章非常有用,否则在进行以下步骤时会出现各种报错。

实现方案:

    • 登录到码云
    • 创建私有仓库
    • 服务器生成ssh公钥
    • 创建SSH公钥

以上步骤在上文中有详细说明。

1.创建shell脚本文件:

$ cd /mnt/renwole
$ vim mysqlbak.sh

2.添加以下内容:

#!/bin/bash
createAt=`date +%Y-%m-%d-%H:%M:%S`
mysql_back_path=/mnt/MySQL-Bak
/usr/local/mysql/bin/mysqldump -u数据库用户名 -p密码 数据库名 > $mysql_back_path/renwoleblog-$createAt.sql
# 自动删除7天前的备份
# -type 文件类型 f是文件
find $mysql_back_path -name "*.sql" -type f -mtime +7 -exec rm -rf {} \;
cd $mysql_back_path
git add -A
git commit -m "${createAt}"
git push origin master

注意:上面的路径一定要是绝对路径,否则执行crontabmysqldump成功,但是导出结果为空,手动执行正常!

3.设置执行权限:

$ chmod +x mysqlbak.sh

4.添加任务计划:

通过crontab定时执行备份脚本

$ crontab -e

插入如下内容:

*/50 2 * * * /mnt/renwole/mysqlbak.sh
$ systemctl restart crond

设置完成后,每日凌晨2点50分,自动备份mysql数据库并推送到码云git仓库,后期可以通过Git查看历史提交的版本。再也不用担心数据丢失了。

如何通过Git将本地项目提交到码云或GitHub

何为码云?

码云是专为开发者提供稳定、高效、安全的云端软件开发协作平台。
无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。

PS:

说白了就是和Github一样。但没有Github的开发者和项目多,再怎么说,人家是全球性的。
但码云速度快(毕竟在国内),私有仓库免费,而且不限制私有库和公有库数量,可以作为备份仓库。

OS环境:CentOS Linux release 7.4.1708 (Core)

1.安装配置Git

$ yum install git -y
$ git config --global user.name "renwole"
$ git config --global user.email renwole@renwole.com

2.在终端生成ssh公钥

执行下面命令,三次回车即可生成 ssh key

$ ssh-keygen -t rsa -C "renwole@renwole.com"

3.查看生成的public key

$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDR9k1FgZRJN3P7V9tLfWZQ......

将以上打印出屏幕的内容添加到码云。

说明:SSH key添加地址://gitee.com/profile/sshkeys。公钥标题任意。

4.测试是否可以信任连接

添加后,在终端中输入以下命令:

$ ssh -T git@gitee.com
The authenticity of host 'gitee.com (120.55.226.24)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
ECDSA key fingerprint is MD5:27:e5:d3:79:2a:9e:eb:6c:93:cd:1f:c1:47:a3:54:b1.
Are you sure you want to continue connecting (yes/no)? yes【输入yes回车】
Warning: Permanently added 'gitee.com,120.55.226.24' (ECDSA) to the list of known hosts.
Authentication failed.

再次执行:

$ ssh -T git@gitee.com
Welcome to Gitee.com, yourname!

返回信息表示已经成功。

5.在码云创建私有仓库

打开码云首页 – 登录 – 点击右上角圆形+号 – 填写你的项目信息 – 创建完成。

打开你的项目地址,例如:

//gitee.com/renwole/renwolecom

点击克隆/下载 – 获取你的SSH地址,下面要用到。

6.把远程仓库项目clone到本地

$ cd /mnt
$ git clone git@gitee.com:renwole/renwolecom.git
Cloning into 'renwolecom'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 2), reused 0 (delta 0)
Receiving objects: 100% (11/11), 19.51 MiB | 5.46 MiB/s, done.
Resolving deltas: 100% (2/2), done.
$ cd renwolecom
$ ll
total 16
-rw-r--r--. 1 root root 10254 Nov 22 09:26 LICENSE
-rw-r--r--. 1 root root    13 Nov 22 09:26 README.md

已经成功克隆到本地。

7.提交项目

你可以将renwolecom目录视为你的项目,鲁完代码直接提交。

无论此项目是否多人参与,push之前先pull,看是否有merge代码,若存在merge就解决merge,若无,请执行以下命令:

$ git pull origin master
$ git add -A
$ git commit -m 'init'
$ git push origin master

8.删除GIT仓库所有提交历史记录

8.1.Checkout

$ git checkout --orphan latest_branch

8.2. Add all the files

$ git add -A

8.3. Commit the changes

$ git commit -am "commit message"

8.4. Delete the branch

$ git branch -D master

8.5.Rename the current branch to master

$ git branch -m master

8.6.Finally, force update your repository

$ git push -f origin master

删除远程文件,本地保留:

$ git rm --cached 文件名
$ git commit -m "remove file from remote repository"
$ git push

删除远程文件夹,本地保留:

$ git rm --cached -r 文件夹名
$ git commit -m "remove directory from remote repository"
$ git push

注意:删除文件夹请使用 -r 参数。

说明:最后上传项目时可选参数 git push origin master -f 表示强制推送要上传的文件。

执行结束后,可以刷新项目地址并查看从本地push仓库的内容。