Backup all github repos, (This is a zx based script)
npx zx https://cdn.jsdelivr.net/gh/tbxark/github-backup/legacy/backup.mjs
npx zx https://cdn.jsdelivr.net/gh/tbxark/github-backup/legacy/mirror.mjs
npm i -g zx
wget https://cdn.jsdelivr.net/gh/tbxark/github-backup/legacy/backup.mjs
wget https://cdn.jsdelivr.net/gh/tbxark/github-backup/legacy/mirror.mjs
chmod +x backup.mjs mirror.mjs
./backup.mjs --config=$(PATH_TO_CONFIG) --target=$(PATH_TO_STORE_DIR)
./mirror.mjs --config=$(PATH_TO_CONFIG) --target=$(PATH_TO_STORE_DIR) --token=${GITEE_TOKEN}
-
The target directory to store the backup. Default is
./
. -
The config file, the default is
./github_backup_config.json
, create a config file if not exists -
Opitions:
all
,none
,question
Usage inbackup.mjs
onlyWhether to clone the repos, the default is
all
-
Opitions:
question
,delete
,keep
Usage inbackup.mjs
onlyWhether to delete untracked repos, the default is
question
-
Opitions:
all
,current
Usage inbackup.mjs
onlyWhen
branch
isall
, clone all branches. Whenbranch
iscurrent
, clone only the current branch. -
Usage in
mirror.mjs
onlyThe token to access Gitee.
-
Opitions:
always
,auto
Usage inmirror.mjs
onlycreate private repos or not, the default is
auto
Configuration file will auto generate if not exists. You can edit the config file to change value.
{
"username": "tbxark",
"token": "YOUR_TOKEN", // https://github.com/settings/tokens
"repos": {
"TKRubberIndicator": {
"name": "TKRubberIndicator",
"ignore": false, // If true, do not clone to the local
"keep": true, // If true, keep a local backup when the remote repo is deleted
"status": {
"private": false,
"fork": false,
"archived": false
},
"date": {
"created_at": "2015-10-28T02:14:22Z",
"updated_at": "2022-02-07T08:09:48Z"
},
"ssh_url": "[email protected]:TBXark/TKRubberIndicator.git",
}
}
}
使用备份脚本需要config
配置文件路径,当配置文件不存在的时候会自动创建。target
是存储repo的目录,clone
可以选择:all
下载所有repo,none
忽略未下载的repo,或者其他值根据repo手动选择。
当github的token过期的时候可以手动修改配置文件中的token值。或者某个repo的配置有问题也可以手动的修改配置文件。
./backup.mjs --config=$(PATH_TO_CONFIG) --target=$(PATH_TO_STORE_DIR) --clone=${all|none|question}
暂时只写了一个将repos镜像到gitee的脚本, 这个得clone本仓库后使用,需要gitee的token,会自动创建不存在的repo。 可以根据原有github仓库类型创建私有还是公有仓库(公有仓库得手机号码认证),也可以全部设置为私有。
./mirror.mjs --config=$(PATH_TO_CONFIG) --target=$(PATH_TO_STORE_DIR) --token=${GITEE_TOKEN} --private=${always|auto}
最近看得到v2ex上有人github账户被封,俄罗斯也被米国盟友各种制裁。感觉把所有代码放在Github上不备份其实不太安全。 现有其他git平台不能实时同步github的仓库。得在每个github的repo添加action去同步,过于麻烦。 所以还是先备份到本地,然后再同步到另外的git平台。而且本地多一个备份也比较安全。