自动备份github仓库小程序
2017-10-11 16:10
405 查看
痛点分析
小Go是一个好奇心泛滥的程序猿。有一天,他想把github repositories全部备份到本地。
小Go有15个git repositories,一个个备份,恐怕要到猴年马月了。
于是,小Go想到了DevOps,AI,DeepLearning,et al. 最后,他决定用shell script实现,批量备份。
分析过程
浏览repositories的URL: https://github.com/Guguant?tab=repositories查看源代码
发现,https://github.com/Guguant/enjoy-code 仓库的URL为如下描述
<a href="/Guguant/enjoy-code" itemprop="name codeRepository"> enjoy-code</a>
综合以上分析,小Go需要做的工作是,首先下载https://github.com/Guguant?tab=repositories的源代码,然后提取出每一个仓库的名字name,之后将仓库的名字组装成仓库的URL,最后使用git clone命令clone repositories。
实现
#!/bin/bash # tool # auto backup all repositories from github if [[ $# -eq 0 ]] || [[ $1 = "-h" ]];then echo -e "\033[31m--------------------------------------------------------\033[0m" echo "Usage1: $0 URL" echo " e.g: $0 https://github.com/Guguant?tab=repositories" echo "" echo "Usage2: $0 Username Page" echo " e.g: $0 Guguant 1" echo -e "\033[31m--------------------------------------------------------\033[0m" exit 1; fi url="" username="" if [ $# == 1 ];then url="https://github.com/Guguant?tab=repositories" username=${url%\?*} username=${username##*/} else username=$1 url="https://github.com/${username}?page=${2}&tab=repositories" fi patten1="a href=\"/"${username}"/" r_path=`curl "${url}" | grep "${patten1}"` # get repositories url path path_head="https://github.com/" for p in ${r_path} do if [[ $p =~ "href" ]];then p=${p#*/} p=${p%\"*} p=${path_head}${p} echo -e "\033[33m ====== Download ====================\033[0m" echo -e "\033[32m $p \033[0m" git clone ${p} echo -e "\033[33m ====== $p has been Finished =================\033[0m" fi done
steps
curl url,下载网页源代码grep截取仓库名
将每一个repertory name组装成完整的URL
git clone
演示
sh github-backup.sh https://github.com/Guguant?tab=repositories[/code]More
star: https://github.com/Guguant/enjoy-code
Issue: https://github.com/Guguant/enjoy-code/issues
(全文完)
相关文章推荐
- 分享一个基于FileSystemWatcher的文件自动备份程序
- linux 自动定时备份程序和Mysql数据库
- 关于网站文件自动备份程序的一点思考
- 一个php自动备份网站文件的程序源码
- 自动备份文件到GITHUB的方法
- linux自动定时备份web程序和mysql数据库
- windows游戏程序自动备份与更新
- 使用gitbash将写好的普通java程序上传到github仓库中
- mysql 网站程序自动备份脚本
- 分享一个基于FileSystemWatcher的文件自动备份程序
- 关于网站文件自动备份程序的一点思考
- 懒人部署插件实现智能、可视化更新程序,让用户不用一个文件一个文件的拷贝,有效防止少、漏更新,同时实现自动备份覆盖的文件,便于随时还原
- (批量)备份github仓库到本地
- 【github notepad】QT 自动备份,(正则表达式)搜索替换
- 自动备份程序目录
- Linux Shell 脚本 自动备份 程序 源码
- 【SVN】自动备份SVN仓库
- [置顶] Linux下git代码仓库&&公共仓库&&软件仓库每日自动备份
- Sql 2005 建立作业自动备份的人工方法和程序代码!(经典)
- 将本地的git仓库push到github上面备份项目