【问题标题】:Script to take a backup of all git repo's and set a cronjob using the same script用于备份所有 git repo 并使用相同脚本设置 cronjob 的脚本
【发布时间】:2016-03-09 00:44:15
【问题描述】:

我想设置脚本并使用 cronjob 备份所有存储库。

仅供参考...

RVM 版本:1.20.13,Ruby 版本:1.9.3p429,Gem 版本:1.8.25,Bundler 版本:1.3.5,Rake 版本:10.0.4,GitLab 信息版本:5.3.0

我尝试了以下方法,但没有奏效。请帮我设置所需的 cronjob。当我手动执行命令时,它们工作正常。

方法一:

#!/bin/bash

cd /home/git/gitlab/

bundle exec rake gitlab:backup:create RAILS_ENV=production

错误:

捆绑:找不到命令

方法二:

#!/bin/sh

cd /home/git/gitlab/ 

bundle exec rake gitlab:backup:create RAILS_ENV=production

错误:

/bin/sh: bundle: 找不到命令

方法三:

10 10 * * * cd /home/git/gitlab && PATH=$PATH:$/home/git/.rvm/gems/ruby-1.9.3-p429/bin:/home/git/.rvm/gems/ruby-1.9.3-p429@global/bin:/home/git/.rvm/rubies/ruby-1.9.3-p429/bin:/home/git/.rvm/bin::/home/git/.rvm/rubies/ruby-1.9.3-p429/.irbrc bundle exec rake gitlab:backup:create RAILS_ENV=production CRON=1 >> /tmp/git_bck.log 2>&1

错误:

/home/git/.rvm/gems/ruby-1.9.3-p429@global/bin/ruby_noexec_wrapper:7:in `require': no such file to load -- ruby​​gems (LoadError) from /home/git /.rvm/gems/ruby-1.9.3-p429@global/bin/ruby_noexec_wrapper:7

【问题讨论】:

标签: ruby linux git bash


【解决方案1】:

问题解决了:

在 .bashrc 中,添加了

PATH=$PATH:$HOME/.rvm/bin # 将 RVM 添加到 PATH 以编写脚本

导出 GIT_HOME=/home/git/git

导出 JAVA_HOME=/home/git/jdk

导出 PATH=$PATH:$GIT_HOME/bin:$JAVA_HOME/bin

source /home/git/.rvm/environments/default


在.bash_profile中,添加了

PATH=$PATH:$HOME/bin

导出路径

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"


仅供参考..

cat /home/git/.rvm/environments/default

导出路径; PATH="/home/git/.rvm/gems/ruby-1.9.3-p429/bin:/home/git/.rvm/gems/ruby-1.9.3-p429@global/bin:/home/git/ .rvm/rubies/ruby-1.9.3-p429/bin:/home/git/.rvm/bin:$PATH"

导出 rvm_env_string ; rvm_env_string='ruby-1.9.3-p429'

导出 rvm_path ; rvm_path='/home/git/.rvm'

导出 rvm_ruby_string ; rvm_ruby_string='ruby-1.9.3-p429'

取消设置 rvm_gemset_name

导出 RUBY_VERSION ; RUBY_VERSION='ruby-1.9.3-p429'

导出 GEM_HOME ; GEM_HOME='/home/git/.rvm/gems/ruby-1.9.3-p429'

导出 GEM_PATH ; GEM_PATH='/home/git/.rvm/gems/ruby-1.9.3-p429:/home/git/.rvm/gems/ruby-1.9.3-p429@global'

导出 MY_RUBY_HOME ; MY_RUBY_HOME='/home/git/.rvm/rubies/ruby-1.9.3-p429'

导出 IRBRC ; IRBRC='/home/git/.rvm/rubies/ruby-1.9.3-p429/.irbrc'

取消设置 MAGLEV_HOME

取消设置 RBXOPT


在 crontab 脚本中:

cd /home/git/gitlab/

来源 $HOME/.bash_profile

源 $HOME/.bashrc

bundle exec rake gitlab:backup:create RAILS_ENV=production

【讨论】:

    【解决方案2】:

    你需要做两件事:

    1) 重新创建与命令行相同的环境。对于此在命令行中运行 env,然后在 cron 中运行 env 并输出到 shell,比较它们中的 2 个

    2) source rvm in(查看您的 .bashrc 或您的 shell 具有的任何 rc)。

    这两件事应该允许您从 cron 运行脚本。您可以将它们放在脚本的开头。

    【讨论】:

      猜你喜欢
      • 2021-06-11
      • 1970-01-01
      • 2022-08-20
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多