• 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

                    http://blog.csdn.net/wenxuechaozhe/article/details/53575098

  • 相关阅读:
    2018.8.5 复习笔记
    C#抽象类与接口的区别【转】
    double转整数问题
    C++学习笔记
    BCG使用
    C++设计模式之工厂方法模式
    静态成员函数
    CTreeCtrl 控件使用总结
    WinAPI: ShellExecute
    C++ STL map使用
  • 原文地址:https://www.cnblogs.com/hpcpp/p/7390044.html
Copyright © 2020-2023  润新知