使用git作为cron和ssh别名的备份工具
问题描述:
我有一个用于存储所有配置(例如.ssh/config)的存储库。不时,我需要一个备份他们,所以我需要运行这些命令使用git作为cron和ssh别名的备份工具
git commit -am 'Auto git backup `date -I`'
git push origin master
据烦了,所以我决定做一个cron作业,运行上面这几行简单的脚本。我运行了crontab -e
并在文件末尾添加了新行。我还在脚本内部用which git
替换了git
。 git commit
命令与git push
完美对比。当我做了一些调试打印我得到
ssh: Could not resolve hostname bitbucket.org: Name or service not known
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
但是,当我手动运行脚本,它的工作原理。我想这是因为SSH的别名,我.ssh/config
,它看起来像
Host bitbucket.org-personal
HostName bitbucket.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host bitbucket.org-work
HostName bitbucket.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/another_id_rsa
是否有人有想法,如何传播SSH别名环境,运行cron作业?也许我错了,问题是由别的东西造成的。
答
问题是网络连接。当我在脚本的乞讨中添加睡眠(或从这里改进的解决方案How to check internet access using bash script in linux?)时,它完美地工作。
你错过了你写入crontab的行的样子。你确定网络启动时备份是否运行? – Jakuje
crontab中的行是'@reboot/home/user/scripts/backup-and-commit.sh',我添加了一些调试消息,并且我确定cron作业正常工作。你认为它不会因网络问题而提交提交? – 32cupo
是的。错误很明显,你没有网络。尝试推迟运行几分钟以等待网络。 – Jakuje