备份文件至 Github 私有仓库

喜大普奔,GitHub Free 可以使用无限的私有仓库。
本文将介绍通过命令行创建远程私有仓库并将本地文件推送至远程仓库的过程。

SSH key

生成密钥

1
2
3
4
EMAIL=填入你的 Github 邮箱
ssh-keygen -t ed25519 -C "$EMAIL"
# 口令是否设置请自行选择,我一路回车全部留空了
# 默认生成 ~/.ssh/id_ed25519.pub

添加到 Github

1
2
cat ~/.ssh/id_ed25519.pub
# 复制内容下一步备用

此处也可以通过命令行操作,感兴趣的可以自行研究 Github API 文档,网页操作的话更加直观一点。

访问 SSH and GPG keys,点击 New SSH key,黏贴上一步复制的内容,标题可以省略。

验证密钥

1
2
3
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_ed25519
ssh -T git@github.com

Access token

访问 Personal Access Tokens 点击 Generate new token 按钮。
授予 repo 操作相关权限,务必手动且安全地保存 token,因为只显示一次。
轻度用户完全可以用一次 token 删一次,这样也更加安全。

创建远程私有仓库

1
2
3
4
user_name=填入你的 Github 用户名
repo_name=填入你新建的仓库名,确保不要重复
github_token=填入你的 access token
curl -u "$user_name:$github_token" https://api.github.com/user/repos -d '{"name":"'$repo_name'","private":true}'

初始化并推送本地仓库

1
2
3
4
5
6
7
8
9
10
11
BACKUP=填入你想要备份的目录的绝对路径
cd $BACKUP
echo "# $repo_name" >> README.md
# 排除不必要的文件,比如大文件、有风险的文件
vi .gitignore
git init
git add -A
# 这里我设置提交记录为日期形式,毕竟目的是备份
git commit -m "`date --rfc-3339=seconds`"
git remote add origin git@github.com:$user_name/$repo_name.git
git push -u origin master

关于安全性

  • 不要推送任何可能泄露账户与个人隐私等危险信息的文件。
  • 妥善保管 ssh key 与 access token,如果遗失或者仅仅尝鲜,请自行通过 Github 网站取消它们的授权。
  • 正常来说,启用 Github 账户两步验证、多注意邮箱通知、不要在不熟悉的设备上操作,没有太大问题。

参考内容