提交git后,删除了备份文件,其实还是存在历史数据的,会越积越多。
使用https方式push,需要输入账号和密码,所以使用ssh的方式,push。
1.1 建立git远程仓库
mysql_backup
1.2 生成ssh 密钥
生成RSA秘钥对:
ssh-Keygen -t rsa -C "your email(邮箱)"
输入命令后,敲下回车键,会提让你输入 生成的秘钥对保存的路径,如果使用默认的保存路径,直接敲回车即可
然后,需要让你输入口令保护,直接敲回车,不要输入口令,不然push的时候还是需要口令。
然后是口令保护确认,如果上一步为空,这一步也直接敲回车即可。
然后rsa秘钥对就生成了。
然后我们打开.ssh文件夹。看到俩个文件 id_rsa和 id_rsa.pub
rsa.pub里面的内容就是我们需要在github上面配置公钥。我们复制里面的内容。
输入密码后配置成功
1.3 克隆本地仓库
复制ssh协议的地址。
在命令行直接使用命令克隆即可:
# 克隆远程仓库
git clone [email protected]:Jieszs/mysql_backup.git
# 关联远程仓库
git remote add origin [email protected]:Jieszs/mysql_backup.git
rem ******MySQL backup start********
@echo off
::删除超过30天的备份数据
forfiles /p "D:\mysql_back\mysql_backup" /m *_backup_*.sql -d -30 /c "cmd /c del /f @path"
::定义时间
set "data_time=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%"
::备份数据库命令
cd /d "C:\Program Files\MySQL\MySQL Server 8.0\bin"
mysqldump --opt --single-transaction=TRUE --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "icss" > D:\mysql_back\mysql_backup\db_backup_%data_time%.sql
cd /d D:\mysql_back\mysql_backup
git add -A
git commit -am "%data_time%mysql_backup"
git push -f origin master
@echo on
rem ******MySQL backup end********
其中,forfiles
删除过期文件的命令,-d -30
删除30天的文件。C:\Program Files\MySQL\MySQL Server 8.0\bin
为 MySQL 安装时,mysqldump.exe
文件所在路径,--user=root
指 MySQL 用户名为 root
--password=123456
指 MySQL 密码为123456
,"icss"
为要备份的数据库的名称,icss_backup_%data_time%.sql
, 为备份文件的名称,这个名称是根据当前的时间规则生成的,比如今天生产的备份文件,名称为icss_backup_20200610012120.sql
。
D:\mysql_back\mysql_backup 为本地仓库的路径。
运行效果如下:
注:如果出现报错
! [remote rejected] master -> master (pre-receive hook declined)
在项目的【Setting】中的【Protected branches】,默认情况下【master】分支是处于被保护状态下的。
解决方法:
打开:计算机管理--系统工具--任务计划程序 找到创建任务
任务名 mysql_backup 备注 mysql定时备份以及删除过期备份
设置触发器
指定操作脚本
成功,效果如下:
参考:https://blog.csdn.net/qq_37103010/article/details/78900553 Windows 下 MySQL 简单定时自动备份、删除过期备份
参考:https://blog.csdn.net/cn_1937/article/details/90714019 俩种方法教你避免git push提交远程仓库每次输入用户名和密码
参考:https://blog.csdn.net/yc1022/article/details/56487680 git仓库删除所有提交历史记录,成为一个干净的新仓库