在上一篇文章讲述了如何在Linux系统中配置BitBucket、GitHub和Coding这三个平台的git账户,这篇文章就分享如何通过shell脚本定时获取自己的CentOS7.1服务器上的备份文件,然后使用git命令同步到这三个平台仓库上。
我自己为这个shell同步脚本设定了以下三个需求功能点:
1、自动获取数据库备份目和程序备份目录下自动生成的最新的备份文件;
2、将获取到的最新的备份数据库和程序文件自动同步到BitBucket、GitHub和Coding这三个Git平台;
3、生成相应的执行日志文件。
根据上面的需求,整理出脚本思路:先获取最新的备份文件,然后复制到本地的BitBucket、GitHub和Coding仓库目录下,然后通过Git命令同步到远端仓库即可,整个过程执行的命令以追加的方式保存到同一个日志文件中。
脚本的主要流程:
1、先声明变量`Source_DB_Dir`、`Source_PRG_Dir`表示自己的CentOS服务器上的数据库和程序备份目录,然后`Git_Err_Log_Dir`是生成的执行日志目录。
2、接着声明BitBucket、GitHub和Coding这3个Git平台的本地仓库所在目录(主要是数据库DB目录和程序PRG目录);
3、后面的三个函数`ERROR`、`NOTICE`和`RUNCMD`对应着不同的操作命令级别并生成相应的日志文件;
4、函数`Get_last_file`功能是获取该目录下面最新的文件;
5、`Git_Commit`函数主要会先通过`git pull`获取远端仓库的最新内容到本地仓库,然后再将本地仓库更新的备份文件同步到远端仓库中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | #!/bin/bash
# TypeCodes Git Synchronous Script v1.0.0
# (c) 2015 vfhky https://typecodes.com/linux/gitsynbackupshell.html
Source_DB_Dir=/mydata/backups/data/mysql
Source_PRG_Dir=/mydata/backups/data/typecodes
Git_Err_Log_Dir=/mydata/backups/logs/git
# Coding.net
CodingNet_DB_Dir=/mydata/GitBang/CodingNet/myblog/db
CodingNet_PRG_Dir=/mydata/GitBang/CodingNet/myblog/program
# BitBucket.org
BitBucket_Dir=/mydata/GitBang/BitBucket/myblog/db
BitBucket_PRG_Dir=/mydata/GitBang/BitBucket/myblog/program
# GitHub.com
GitHub_Dir=/mydata/GitBang/GitHub/myblog/db
GitHub_PRG_Dir=/mydata/GitBang/GitHub/myblog/program
# Get the newest file name
#Newest_File="ls -lrt| tail -n 1 | awk '{print $9}'"
# Space separated list of databases
PRGNAME="Git_Synchronous"
# Current date format: e.g 20150505_2015
Current_Date= |
---|
可以将这个脚本保存为git.sh,然后使用时通过chmod +x git.sh
命令添加执行权限,最后通过./git.sh
执行该脚本即可。附图如下:
同步到BitBucket仓库时的截图:
同步到GitHub仓库时的截图:
利用Linux系统的crontab定时任务工具执行该脚本,例如下面这个配置就是每天凌晨1点的时候执行该shell脚本。
[root@typecodes bak_list]# crontab -e
0 1 * * * /mydata/backups/bak_list/git.sh
根据脚本中的配置,生成的日志类似于/mydata/backups/logs/git/Git_20150706_0100.log
: