gitLab 全局hooks和custom_hooks,以及服务器端自动更新和备份(三)
1. gitlab手动备份
完成gitlab搭建,所有用户完成备份以后,修改/etc/gitlab/gitlab.rb里面的默认存放备份文件的目录:
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
设置保持多长时间的备份,如果不设置这个,gitlab每次备份都会删除原来的备份。
###! The duration in seconds to keep backups before they are allowed to be deleted gitlab_rails['backup_keep_time'] = 604800
604800代表秒数,这里保存的是是7天的备份。
修改完以后保存,使用如下命令来重载配置文件:
sudo gitlab-ctl reconfigure
当完成以上操作以后,我们用下面的命令来完成备份:
gitlab-rake gitlab:backup:create
这时候,我们发现/var/opt/gitlab/backups文件夹下多了备份
上面是之前的备份。
2. 利用crontab对gitlab进行自动备份
在ubuntu版本下,crontab工具是默认安装的,配置文件在/etc/crontab里,用编辑器打开,我们看到如下的东西:
# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
具体crontab的使用可以参考:http://www.cnblogs.com/michaelzhao10/p/4875719.html
http://blog.csdn.net/tianhuadihuo/article/details/6620376
http://www.cnblogs.com/michaelzhao10/p/4875719.html
在crontab文件里面,每一行代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,每个字段之间用空格分割,没用的段用*代替,格式如下:
m h dom mon dow user command
其中:
- m: 表示分钟,可以是从0到59之间的任何整数。
- h:表示小时,可以是从0到23之间的任何整数。
- dom:表示日期,可以是从1到31之间的任何整数。
- mon:表示月份,可以是从1到12之间的任何整数。
- dow:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
- user : 表示执行的用户。
- command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件(如shell文件)。
我们在/home/hp/backup目录下创建auto_backup.sh文件,同时赋予执行权限,操作如下:
sudo chmod +x auto_backup.sh
sudo vim auto_backup.sh
在这个脚本里执行:
gitlab-rake gitlab:backup:create
然后保存退出。我们可以执行一遍该脚本,可以发现在bakcup目录下又创建了一个备份。
修改crontab文件,添加一行:
0 20 * * * root /home/backup/auto_backup.sh -D 1
上面的命令就是让crontab每天的20:00自动执行auto_backup.sh脚本。
参考:http://blog.csdn.net/utopiaprince/article/details/50039989
3. 利用crontab对git项目进行自动更新(或者说是自动拉取)
#!/bin/bash dst_array[0]=/var/opt/gitlab/git-data/repositories/<group>/<project>.git/custom_hooks/post-receive #需要备份的,就添加数组项,调用相应的post-receive钩子(shell脚本) for var in ${dst_arrary{@}} do bash $var done
按照上面的步骤,添加到crontab定时任务中,实现对git项目的定时pull,具体post-receive可以参考前面的文章。
shell中数组的遍历可以参考:https://www.coder4.com/archives/3853
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· Vite CVE-2025-30208 安全漏洞
· 《HelloGitHub》第 108 期
· MQ 如何保证数据一致性?
· 一个基于 .NET 开源免费的异地组网和内网穿透工具