代码定时自动备份,此处以Linux ubuntu16.04服务器环境为例
需要:一个自己的github账号
github仓库准备
1.注册一个账号 (步骤略)
2.新建一个存储的文件夹/仓库
3.在本地环境生成公钥
ssh 公钥认证是ssh认证的方式之一。通过公钥认证可实现ssh免密码登陆,git的ssh方式也是通过公钥进行认证的。在用户目录的home目录下,有一个.ssh的目录,和当前用户ssh配置认证相关的文件,几乎都在这个目录下。
$ la ~/
.aspera .bash_history bkcode .condarc .dbus .git .java .lesshst .nano .selected_editor .viminfo .Xauthority
asperaweb_id_dsa.putty .bash_logout .cache .config deepLearning .gitconfig .jupyter .local .profile software .wget-hsts
bam.list .bashrc .conda data git .ipython .keras .mozilla .python_history .ssh workshop
$ cd ~/.ssh
$ ssh-keygen -f git_test -C "test key"
$ ls
git_test git_test.pub
$ $ cat git_test.pub
ssh-rsa AAAAB3NzaC1y*************JS2JMDphfr+NvN be**@yahoo.com
4.复制公钥到github账号
右上角账号头像——settings——(左边导航栏)SSH and GPG keys——new SSH key ——Add keys
保存后:
把远程版本库克隆到本地(选择SSH)
$ git clone git@github.com:l***/bkcode.git
Cloning into 'bkcode'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
$ cd bkcode/
$ ls
02Vigen.sh 15vip_gatk.sh 23survival.ipynb bowtie2.sh ...
在本地服务器内会有了一个叫“bkcode”(你设定的github仓库名)的文件夹,把你想备份的文件都复制到这个文件夹里 (软连接不行,只会保存link的路径)注意!仓库存储的单个文件大小不可大于100M(github的限制),不然就会一直报错,其他文件也无法上传。
正式开始上传文档(手动上传更新)
$ cd bkcode/
$ git add .
# (optional)
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: 02Vigen.sh
new file: 04HLAdata_processing.py
new file: 06MPC_transfer.py
# 每次都要修改备注,否则会报错
$ git commit -m "First commit."
[master (root-commit) f931181] First commit.
21 files changed, 45477 insertions(+)
create mode 100644 02Vigen.sh
create mode 100644 04HLAdata_processing.py
create mode 100644 06MPC_transfer.py
# pull code from github
$ git pull
# uoload codes to github
$ git push
#删除文件和git的记录
$ git rm <file>
此时刷新你的github网页就会看见更新了的代码啦
设定自动更新代码
先设定能push文件的shell代码,在bkcode/文件夹内编写一个小程序来执行 autoupdate.sh
#! /bin/bash
git add .
git commit -m "`date '+%D'`"
git push
再用 crontab 软件来设定定时运行程序
# 安装crontab过程略
$ crontab -e (选择和进入编辑器编辑代码,后保存退出)
# 每天凌晨12点执行autoupdate.sh这个代码
$ 0 0 * * * /bin/bash /path/to/bkcode/autoupdate.sh 2>autoupdate.err
DONE!